home *** CD-ROM | disk | FTP | other *** search
/ Kit PC World De Ampliacion De Windows 95 / Kit PC World de ampliacion de Windows 95.iso / clarion / 3rdparty / tools / toolcrft / tcwizard.tpl < prev    next >
Encoding:
Text File  |  1995-10-23  |  81.4 KB  |  2,091 lines

  1. #TEMPLATE(Wizards,'Clarion for Windows 1.5 Wizard Templates with Power Browse Support')
  2. #HELP('CW15HELP.HLP')
  3. #GROUP(%DeclareSymbols)
  4. #DECLARE(%GenerationReporting)
  5. #SET(%GenerationReporting,%False)
  6. #DECLARE(%ReplaceExistingProcedures)
  7. #DECLARE(%TXAFile)
  8. #DECLARE(%CurrentProcedure)
  9. #DECLARE(%CurrentTab)
  10. #DECLARE(%InitializeTab)
  11. #!
  12. #DECLARE(%WindowWidth)
  13. #DECLARE(%WindowHeight)
  14. #DECLARE(%WindowButtonRows)
  15. #DECLARE(%WindowButtonColumns)
  16. #!
  17. #DECLARE(%WorksheetWidth)
  18. #DECLARE(%WorksheetHeight)
  19. #DECLARE(%WorksheetButtonRows)
  20. #DECLARE(%WorksheetButtonColumns)
  21. #!
  22. #DECLARE(%MaximumTopOffset)
  23. #DECLARE(%CurrentX)
  24. #DECLARE(%CurrentY)
  25. #DECLARE(%CurrentLineLength)
  26. #DECLARE(%ValueConstruct)
  27. #DECLARE(%HoldConstruct)
  28. #DECLARE(%TestHeight)
  29. #DECLARE(%TestWidth)
  30. #DECLARE(%TestControlType)
  31. #DECLARE(%PictureType)
  32. #DECLARE(%RelationRows)
  33. #DECLARE(%RelationCols)
  34. #DECLARE(%TabLineCount)
  35. #DECLARE(%CheckIndentWidth)
  36. #DECLARE(%CurrentTabLength)
  37. #DECLARE(%CurrentTabLineLength)
  38. #DECLARE(%ControlPlacementTries)
  39. #DECLARE(%VerticalSpaceNextControl)
  40. #DECLARE(%GenerateProgramSection)
  41. #DECLARE(%ProcCount)
  42. #DECLARE(%ContCounter)
  43. #!
  44. #DECLARE(%RelationList),MULTI
  45. #DECLARE(%BrowseFiles),UNIQUE
  46. #DECLARE(%ChildBrowseFiles),UNIQUE
  47. #DECLARE(%SelectFiles),UNIQUE
  48. #DECLARE(%UpdateFiles),UNIQUE
  49. #!
  50. #DECLARE(%ProcedureList),MULTI
  51. #DECLARE(%QuickProcedureType,%ProcedureList)
  52. #DECLARE(%QuickProcedurePrimary,%ProcedureList)
  53. #DECLARE(%QuickProcedurePrimaryKey,%ProcedureList)
  54. #DECLARE(%QuickProcedureDescription,%ProcedureList)
  55. #DECLARE(%QuickProcedureDefault,%ProcedureList)
  56. #DECLARE(%QuickProcedureWindow,%ProcedureList)
  57. #DECLARE(%QuickProcedureReport,%ProcedureList)
  58. #!
  59. #DECLARE(%QuickOtherFiles,%ProcedureList),UNIQUE
  60. #!
  61. #DECLARE(%WindowLayerID,LONG),UNIQUE
  62. #DECLARE(%WindowLayerTabText,%WindowLayerID)
  63. #DECLARE(%WindowLayerTabREQ,%WindowLayerID)
  64. #DECLARE(%WindowLayerTopOffset,%WindowLayerID)
  65. #DECLARE(%WindowLayerBottomOffset,%WindowLayerID)
  66. #DECLARE(%WindowLayerSpecialCase,%WindowLayerID)
  67. #DECLARE(%WindowLayerCheckIndentLevel,%WindowLayerID)
  68. #DECLARE(%WindowLayerClosed,%WindowLayerID)
  69. #!
  70. #DECLARE(%WindowControlID,%WindowLayerID,LONG),MULTI
  71. #DECLARE(%WindowControl,%WindowControlID)
  72. #DECLARE(%WindowControlXOffset,%WindowControlID)
  73. #DECLARE(%WindowControlYOffset,%WindowControlID)
  74. #DECLARE(%WindowControlWidth,%WindowControlID)
  75. #DECLARE(%WindowControlHeight,%WindowControlID)
  76. #DECLARE(%WindowControlStatement,%WindowControlID)
  77. #!
  78. #DECLARE(%ProcedureDataItemID,LONG),MULTI
  79. #DECLARE(%ProcedureDataItem,%ProcedureDataItemID)
  80. #DECLARE(%ProceduredataItemType,%ProcedureDataItemID)
  81. #!
  82. #DECLARE(%QuickTemplateInstance,LONG),MULTI
  83. #DECLARE(%QuickTemplateType,%QuickTemplateInstance)
  84. #DECLARE(%QuickTemplateParent,%QuickTemplateInstance)
  85. #DECLARE(%QuickTemplatePrimary,%QuickTemplateInstance)
  86. #DECLARE(%QuickTemplatePrimaryKey,%QuickTemplateInstance)
  87. #DECLARE(%QuickTemplateProcProp,%QuickTemplateInstance)
  88. #DECLARE(%QuickTemplateControl,%QuickTemplateInstance),MULTI
  89. #DECLARE(%QuickTemplateSecondaryFiles,%QuickTemplateInstance),UNIQUE
  90. #!
  91. #DECLARE(%FileList),MULTI
  92. #DECLARE(%FileListPromptWidth,%FileList)
  93. #DECLARE(%FileListControlsWidth,%FileList)
  94. #DECLARE(%FileListDescription,%FileList)
  95. #DECLARE(%FileListTab,%FileList),MULTI
  96. #DECLARE(%FileListTabHasPrompts,%FileListTab)
  97. #!
  98. #DECLARE(%FieldListID,%FileList,LONG),UNIQUE
  99. #DECLARE(%FieldList,%FieldListID)
  100. #DECLARE(%FieldListType,%FieldListID)
  101. #DECLARE(%FieldListJustification,%FieldListID)
  102. #DECLARE(%FieldListLookup,%FieldListID)
  103. #DECLARE(%FieldListLookupKey,%FieldListID)
  104. #DECLARE(%FieldListLookupField,%FieldListID)
  105. #DECLARE(%FieldListVerticalSpace,%FieldListID)
  106. #DECLARE(%FieldListControl,%FieldListID),MULTI
  107. #DECLARE(%FieldListControlType,%FieldListControl)
  108. #DECLARE(%FieldListControlXOffset,%FieldListControl)
  109. #DECLARE(%FieldListControlYOffset,%FieldListControl)
  110. #DECLARE(%FieldListControlWidth,%FieldListControl)
  111. #DECLARE(%FieldListControlHeight,%FieldListControl)
  112. #DECLARE(%FieldListControlOrig,%FieldListControl)
  113. #DECLARE(%FieldListControlLink,%FieldListControl)
  114. #DECLARE(%FieldListCheckColumn,%FieldListID)
  115. #DECLARE(%FieldListLinkList,%FieldListID),MULTI
  116. #DECLARE(%FieldListTab,%FieldListID)
  117. #DECLARE(%FieldListHeader,%FieldListID)
  118. #DECLARE(%FieldListPicture,%FieldListID)
  119. #DECLARE(%FieldListPromptWidth,%FieldListID)
  120. #DECLARE(%FieldListBrowseWidth,%FieldListID)
  121. #DECLARE(%FieldListTotalWidth,%FieldListID)
  122. #DECLARE(%FieldListTotalHeight,%FieldListID)
  123. #DECLARE(%FieldListRequiresEnd,%FieldListID)
  124. #DECLARE(%FieldListReportControl,%FieldListID),MULTI
  125. #DECLARE(%FieldListReportControlType,%FieldListReportControl)
  126. #DECLARE(%FieldListReportControlXOffset,%FieldListReportControl)
  127. #DECLARE(%FieldListReportControlYOffset,%FieldListReportControl)
  128. #DECLARE(%FieldListReportControlWidth,%FieldListReportControl)
  129. #DECLARE(%FieldListReportControlHeight,%FieldListReportControl)
  130. #!
  131. #DECLARE(%KeyListID,%FileList,LONG),UNIQUE
  132. #DECLARE(%KeyList,%KeyListID)
  133. #DECLARE(%KeyListTab,%KeyListID)
  134. #DECLARE(%KeyListNoPopulate,%KeyListID)
  135. #DECLARE(%KeyListDescription,%KeyListID)
  136. #DECLARE(%KeyListField,%KeyListID),MULTI
  137. #!
  138. #INSERT(%QuickBrowseDeclarations)
  139. #INSERT(%QuickFormDeclarations)
  140. #INSERT(%QuickAppDeclarations)
  141. #INSERT(%QuickDeclareAdditions)
  142. #INSERT(%QuickDeclareFields)
  143. #INSERT(%QuickDeclareProcedure)
  144. #INSERT(%QuickDeclareDefaults)
  145. #!--------------------------------------------------------------------------
  146. #GROUP(%QuickDeclareDefaults)
  147. #DECLARE(%HighestUserLevel)
  148. #DECLARE(%Menubar)
  149. #DECLARE(%LayerWindow)
  150. #DECLARE(%LayerPreSheet)
  151. #DECLARE(%LayerPostSheet)
  152. #DECLARE(%LayerFirstChildBrowse)
  153. #DECLARE(%MaximumSheetHeight)
  154. #DECLARE(%MaximumSheetWidth)
  155. #DECLARE(%MinimumSheetWidth)
  156. #DECLARE(%MinimumTextHeight)
  157. #DECLARE(%MinimumBrowseHeight)
  158. #DECLARE(%MaximumBrowseItemWidth)
  159. #DECLARE(%InitialSheetYOffset)
  160. #DECLARE(%DefaultXOffset)
  161. #DECLARE(%DefaultYOffset)
  162. #DECLARE(%DefaultReportXOffset)
  163. #DECLARE(%DefaultReportInitialYOffset)
  164. #DECLARE(%DefaultReportYOffset)
  165. #DECLARE(%DefaultReportTextYOffset)
  166. #DECLARE(%DefaultButtonWidth)
  167. #DECLARE(%DefaultButtonHeight)
  168. #DECLARE(%DefaultRadioHeight)
  169. #DECLARE(%DefaultRadioWidth)
  170. #DECLARE(%DefaultCheckHeight)
  171. #DECLARE(%DefaultCheckBoxXOffset)
  172. #DECLARE(%DefaultPromptWidth)
  173. #DECLARE(%DefaultPromptHeight)
  174. #DECLARE(%DefaultControlHeight)
  175. #DECLARE(%DefaultControlWidth)
  176. #DECLARE(%MinimumControlWidth)
  177. #DECLARE(%DefaultPromptYOffset)
  178. #DECLARE(%DefaultListItemHeight)
  179. #DECLARE(%MaximumRelationCols)
  180. #DECLARE(%MinimumTabLength)
  181. #DECLARE(%TabTextOffset)
  182. #DECLARE(%TabLineVerticalOffset)
  183. #DECLARE(%TabDefaultVerticalOffset)
  184. #DECLARE(%DefaultSpinWidthOffset)
  185. #DECLARE(%MaximumCheckColumns)
  186. #DECLARE(%CheckColumnWidth)
  187. #DECLARE(%MaximumBrowseFields)
  188. #DECLARE(%RadioInitialYOffset)
  189. #DECLARE(%DefaultRadioXOffset)
  190. #DECLARE(%DefaultRadioYOffset)
  191. #DECLARE(%TopControlOffset)
  192. #DECLARE(%MiddleControlOffset)
  193. #DECLARE(%BottomControlOffset)
  194. #DECLARE(%TextControlOffset)
  195. #DECLARE(%DefaultSelectControlText)
  196. #DECLARE(%DefaultInsertControlText)
  197. #DECLARE(%DefaultChangeControlText)
  198. #DECLARE(%DefaultDeleteControlText)
  199. #DECLARE(%DefaultCancelControlText)
  200. #DECLARE(%DefaultCloseControlText)
  201. #DECLARE(%DefaultHelpControlText)
  202. #DECLARE(%DefaultOKControlText)
  203. #!--------------------------------------------------------------------------
  204. #GROUP(%BeginGeneration)
  205. #SET(%TXAFile,%Application & '.txa')
  206. #CREATE(%TXAFile)
  207. #!--------------------------------------------------------------------------
  208. #GROUP(%GenerateProcedures)
  209. #SET(%ProcCount,0)
  210. #MESSAGE('Wizard Code Generation Progress',0)
  211. #MESSAGE('Beginning Generation',1)
  212. #INSERT(%BeginGeneration)
  213. #IF(%GenerateProgramSection)
  214. [APPLICATION]
  215. PROCEDURE Main
  216. DICTIONARY '%Application.DCT'
  217. #ENDIF
  218. #FOR(%ProcedureList)
  219.   #SET(%ProcCount,%ProcCount + 1)
  220.   #MESSAGE('Generating Procedure ' & %ProcCount & ':  ' & %ProcedureList,1)
  221.   #MESSAGE('Generating Symbols',2)
  222.   #INSERT(%ResetGlobalSymbols)
  223.   #IF(%QuickProcedurePrimary)
  224.     #FIX(%FileList,%QuickProcedurePrimary)
  225.     #IF(NOT %FileList)
  226.       #ADD(%FileList,%QuickProcedurePrimary)
  227.       #INSERT(%AccumulateFieldList,%FileList)
  228.     #ENDIF
  229.   #ENDIF
  230.   #SET(%CurrentProcedure,%ProcedureList)
  231.   #MESSAGE('Constructing Procedure',2)
  232.   #CASE(%QuickProcedureType)
  233.   #OF('ToolCraft PowerBrowse')
  234.     #INSERT(%ConstructQuickBrowse)
  235.   #OF('Clarion Form')
  236.     #INSERT(%ConstructQuickForm)
  237.   #OF('Clarion Frame')
  238.     #INSERT(%PowerBrowseGlobalExtension)
  239.     #INSERT(%ConstructQuickApp)
  240.   #OF('Clarion Report')
  241.   #ELSE
  242.     #CYCLE
  243.   #ENDCASE
  244.   #FIX(%FileList,%QuickProcedurePrimary)
  245. #INSERT(%GenerateProcedure)
  246. #ENDFOR
  247. #PURGE(%RelationList)
  248. #PURGE(%BrowseFiles)
  249. #PURGE(%ChildBrowseFiles)
  250. #PURGE(%SelectFiles)
  251. #PURGE(%UpdateFiles)
  252. #PURGE(%ProcedureList)
  253. #MESSAGE('Importing...',1)
  254. #INSERT(%CloseAndImport)
  255. #!--------------------------------------------------------------------------
  256. #GROUP(%PowerBrowseGlobalExtension)
  257. #INSERT(%WorkAroundForImportBugOnNewApp)
  258. [ADDITION]
  259. NAME ToolCraft PowerBrowseLibrary
  260. [INSTANCE]
  261. INSTANCE 1
  262. #!--------------------------------------------------------------------------
  263. #GROUP(%WorkAroundForImportBugOnNewApp)
  264. [APPLICATION]
  265. PROCEDURE TemporaryMainProcedureNameForBugFix
  266.     #CLOSE(%TxaFile)
  267.     #IMPORT(%TXAFile),RENAME
  268.     #CREATE(%TXAFile)
  269. [APPLICATION]
  270. PROCEDURE %CurrentProcedure
  271. #!--------------------------------------------------------------------------
  272. #GROUP(%ResetGlobalSymbols)
  273. #INSERT(%SetGlobalDefaults)
  274. #SET(%HighestUserLevel,9999)
  275. #SET(%Menubar,10000)
  276. #SET(%LayerWindow,10001)
  277. #SET(%LayerPostSheet,10002)
  278. #SET(%LayerFirstChildBrowse,9950)
  279. #SET(%TopControlOffset,0)
  280. #SET(%MiddleControlOffset,10000)
  281. #SET(%BottomControlOffset,20000)
  282. #SET(%TextControlOffset,30000)
  283. #FREE(%QuickTemplateInstance)
  284. #FREE(%ProcedureDataItemID)
  285. #FREE(%WindowLayerID)
  286. #FREE(%RelationList)
  287. #!--------------------------------------------------------------------------
  288. #GROUP(%GenerateProcedure)
  289. #MESSAGE('',3)
  290. #MESSAGE('Generating Procedure Header',2)
  291. #INSERT(%GenerateProcedureHeader)
  292. #MESSAGE('Generating File List',2)
  293. #INSERT(%GenerateFileList)
  294. #MESSAGE('Generating Procedure Prompts',2)
  295. #INSERT(%GenerateProcedurePrompts)
  296. #MESSAGE('Generating Field Prompts',2)
  297. #INSERT(%GenerateFieldPrompts)
  298. #MESSAGE('Generating Extensions',2)
  299. #INSERT(%GenerateAdditionPrompts)
  300. #IF(%QuickProcedureWindow)
  301. #MESSAGE('Generating Window',2)
  302. #INSERT(%GenerateWindow)
  303. #ENDIF
  304. #IF(%QuickProcedureReport)
  305. #MESSAGE('Generating Report',2)
  306. #INSERT(%GenerateReport)
  307. #ENDIF
  308. #MESSAGE('',2)
  309. #!--------------------------------------------------------------------------
  310. #GROUP(%CloseAndImport)
  311. #CLOSE(%TXAFile)
  312. #IMPORT(%TXAFile),REPLACE
  313. #!--------------------------------------------------------------------------
  314. #GROUP(%GenerateFileList)
  315. [FILES]
  316. #IF(%QuickProcedureWindow)
  317.   #FOR(%QuickTemplateInstance),WHERE(%QuickTemplatePrimary)
  318. [PRIMARY]
  319. %QuickTemplatePrimary
  320. [INSTANCE]
  321. %QuickTemplateInstance
  322.     #IF(%QuickTemplatePrimaryKey)
  323. [KEY]
  324. %QuickTemplatePrimaryKey
  325.     #ENDIF
  326.     #IF(ITEMS(%QuickTemplateSecondaryFiles))
  327. [SECONDARY]
  328.       #FOR(%QuickTemplateSecondaryFiles)
  329. %QuickTemplateSecondaryFiles
  330.       #ENDFOR
  331.     #ENDIF
  332.   #ENDFOR
  333. #ELSIF(%QuickProcedureReport)
  334. [PRIMARY]
  335. %QuickProcedurePrimary
  336. [INSTANCE]
  337. 0
  338.   #IF(%QuickProcedurePrimaryKey)
  339. [KEY]
  340. %QuickProcedurePrimaryKey
  341.   #ENDIF
  342. #ENDIF
  343. #IF(ITEMS(%QuickOtherFiles))
  344. [OTHERS]
  345.   #FOR(%QuickOtherFiles)
  346. %QuickOtherFiles
  347.   #ENDFOR
  348. #ENDIF
  349. #!--------------------------------------------------------------------------
  350. #GROUP(%GenerateWindow)
  351. [WINDOW]
  352. #IF(%QuickProcedureType = 'Clarion Frame')
  353. AppFrame APPLICATION('Application'),AT(,,400,220),STATUS(-1,80,120,45),SYSTEM,MAX,RESIZE,FONT('MS Sans Serif',8,,)
  354. #ELSE
  355. QuickWindow WINDOW('%'QuickProcedureDescription'),AT(,,%WindowWidth,%WindowHeight),FONT('MS Sans Serif',8,,),IMM,SYSTEM,GRAY,MDI,HLP('%ProcedureList')
  356. #ENDIF
  357. #FIX(%WindowLayerID,%MenuBar)
  358. #SUSPEND
  359.   #?MENUBAR
  360.     #FOR(%WindowControlID)
  361.        %WindowControlStatement
  362.     #ENDFOR
  363.   #?END
  364. #RESUME
  365. #FIX(%WindowLayerID,%LayerPreSheet)
  366.   #INSERT(%ConstructWindowLayer)
  367. #IF(%QuickProcedureType <> 'ToolCraft PowerBrowse')
  368.   #SUSPEND
  369.   #?SHEET,AT(%DefaultXOffset,%DefaultYOffset,%WorksheetWidth,%WorksheetHeight),USE(?CurrentTab),#ORIG(CurrentTab)
  370.   #FOR(%WindowLayerID),WHERE(%WindowLayerID =< %HighestUserLevel AND %WindowLayerID > %LayerPreSheet)
  371.     TAB('%WindowLayerTabText')
  372.       #INSERT(%ConstructWindowLayer)
  373.     END
  374.   #ENDFOR
  375.   #?END
  376.   #RESUME
  377. #ENDIF
  378. #FIX(%WindowLayerID,%LayerPostSheet)
  379. #INSERT(%ConstructWindowLayer)
  380. #FIX(%WindowLayerID,%LayerWindow)
  381. #INSERT(%ConstructWindowLayer)
  382.  END
  383. #!--------------------------------------------------------------------------
  384. #GROUP(%ConstructWindowLayer)
  385. #FOR(%WindowControlID)
  386.   #FIND(%QuickTemplateControl,%WindowControl)
  387.   #IF(%QuickTemplateControl)
  388.  #INSERT(%PopulateControlTemplate)
  389.   #ELSE
  390.     #FIND(%FieldList,%WindowControl)
  391.     #IF(%FieldList)
  392.       #IF(%WindowLayerID = %LayerWindow)
  393.  #INSERT(%PopulateDictionaryControl,%WindowControlXOffset,%WindowControlYOffset,%WindowWidth,%WindowHeight)
  394.       #ELSE
  395.  #INSERT(%PopulateDictionaryControl,%WindowControlXOffset,%WindowControlYOffset,%WorksheetWidth,%WorksheetHeight)
  396.       #ENDIF
  397.     #ELSE
  398.  %WindowControlStatement,USE(%WindowControl),AT(%WindowControlXOffset,%WindowControlYOffset,%WindowControlWidth,%WindowControlHeight)
  399.     #ENDIF
  400.   #ENDIF
  401. #ENDFOR
  402. #!--------------------------------------------------------------------------
  403. #GROUP(%GenerateReport),AUTO
  404. #DECLARE(%KeyFieldList),MULTI
  405. #FIX(%FileList,%QuickProcedurePrimary)
  406. #FIX(%File,%QuickProcedurePrimary)
  407. #FIX(%Key,%QuickProcedurePrimaryKey)
  408. [REPORT]
  409. report REPORT,AT(1000,2000,6000,7000),PRE(RPT),FONT('Arial',10,,),THOUS
  410.        HEADER,AT(1000,1000,6000,1000)
  411.        END
  412. detail DETAIL
  413. #SET(%CurrentY,%DefaultReportInitialYOffset)
  414. #FOR(%KeyField)
  415.   #FOR(%FieldListID),WHERE(%FieldList = %KeyField)
  416.     #FOR(%FieldListReportControl)
  417.       #SET(%ValueConstruct,%FieldListReportControl)
  418.       #SET(%ValueConstruct,REPLACE(%ValueConstruct,'MSG',''))
  419.       %ValueConstruct,AT(%DefaultReportXOffset,%CurrentY,,)
  420.     #ENDFOR
  421.     #ADD(%KeyFieldList,%KeyField)
  422.     #SET(%CurrentY,%CurrentY + %DefaultReportYOffset)
  423.   #ENDFOR
  424. #ENDFOR
  425. #FIX(%File,%QuickProcedurePrimary)
  426. #FOR(%FieldListID),WHERE(%FieldListType <> 'MEMO')
  427.   #FIX(%KeyFieldList,%FieldList)
  428.   #IF(NOT %KeyFieldList)
  429.     #FOR(%FieldListReportControl)
  430.       #SET(%ValueConstruct,%FieldListReportControl)
  431.       #SET(%ValueConstruct,REPLACE(%ValueConstruct,'MSG',''))
  432.       %ValueConstruct,AT(%DefaultReportXOffset,%CurrentY,,)
  433.     #ENDFOR
  434.     #SET(%CurrentY,%CurrentY + %DefaultReportYOffset)
  435.   #ENDIF
  436. #ENDFOR
  437.        END
  438. #FOR(%FieldListID),WHERE(%FieldListType = 'MEMO')
  439.        #SET(%ValueConstruct,%DefaultReportTextYOffset * 2)
  440. %FieldList:Detail DETAIL,AT(,,6000,%ValueConstruct),USE(?%FieldList:Detail)
  441.        #SET(%ValueConstruct,6000 - %DefaultReportXOffset * 2)
  442.          TEXT,AT(%DefaultReportTextYOffset,%DefaultReportTextYOffset,%ValueConstruct,4000)
  443.        END
  444. #ENDFOR
  445.        FOOTER,AT(1000,9000,6000,1000)
  446.        END
  447.      END
  448. #!-------------------------------------------------------
  449. #GROUP(%AddPrimaryBrowse,%NewProcedureFile)
  450. #DECLARE(%NewProcedureName)
  451. #FIND(%File,%NewProcedureFile)
  452. #SET(%NewProcedureName,'Browse' & %File)
  453. #IF(NOT %ReplaceExistingProcedures)
  454.   #FIX(%Procedure,%NewProcedureName)
  455. #ENDIF
  456. #IF(NOT %Procedure)
  457.   #FIX(%ProcedureList,%NewProcedureName)
  458.   #IF(NOT %ProcedureList)
  459.     #ADD(%ProcedureList,%NewProcedureName)
  460.     #SET(%QuickProcedureType,'ToolCraft PowerBrowse')
  461.     #SET(%QuickProcedurePrimary,%File)
  462.     #SET(%QuickProcedureDescription,'Browse the ' & %File & ' File')
  463.     #SET(%QuickProcedureDefault,'Primary Browse')
  464.     #SET(%QuickProcedureWindow,%True)
  465.   #ENDIF
  466. #ENDIF
  467. #!-------------------------------------------------------
  468. #GROUP(%AddSecondaryBrowse,%NewProcedureKey)
  469. #DECLARE(%NewProcedureName)
  470. #FIND(%Key,%NewProcedureKey)
  471. #SET(%NewProcedureName,'Browse' & %Key)
  472. #IF(NOT %ReplaceExistingProcedures)
  473.   #FIX(%Procedure,%NewProcedureName)
  474. #ENDIF
  475. #IF(NOT %Procedure)
  476.   #FIX(%ProcedureList,%NewProcedureName)
  477.   #IF(NOT %ProcedureList)
  478.     #ADD(%ProcedureList,%NewProcedureName)
  479.     #SET(%QuickProcedureType,'ToolCraft PowerBrowse')
  480.     #SET(%QuickProcedurePrimary,%File)
  481.     #SET(%QuickProcedurePrimaryKey,%Key)
  482.     #SET(%QuickProcedureDescription,'Browse the ' & %File & ' File by ' & %Key)
  483.     #SET(%QuickProcedureDefault,'Secondary Browse')
  484.     #SET(%QuickProcedureWindow,%True)
  485.   #ENDIF
  486. #ENDIF
  487. #!-------------------------------------------------------
  488. #GROUP(%AddSelectBrowse,%NewProcedureFile)
  489. #DECLARE(%NewProcedureName)
  490. #FIX(%File,%NewProcedureFile)
  491. #SET(%NewProcedureName,'Select' & %File)
  492. #IF(NOT %ReplaceExistingProcedures)
  493.   #FIX(%Procedure,%NewProcedureName)
  494. #ENDIF
  495. #IF(NOT %Procedure)
  496.   #FIX(%ProcedureList,%NewProcedureName)
  497.   #IF(NOT %ProcedureList)
  498.     #ADD(%ProcedureList,%NewProcedureName)
  499.     #SET(%QuickProcedureType,'ToolCraft PowerBrowse')
  500.     #SET(%QuickProcedurePrimary,%File)
  501.     #SET(%QuickProcedureDescription,'Select a ' & %File & ' Record')
  502.     #SET(%QuickProcedureDefault,'Select Browse')
  503.     #SET(%QuickProcedureWindow,%True)
  504.   #ENDIF
  505. #ENDIF
  506. #!-------------------------------------------------------
  507. #GROUP(%AddUpdateProcedure,%NewProcedureFile,%OverrideProcedureName)
  508. #DECLARE(%NewProcedureName)
  509. #IF(NOT %OverrideProcedureName)
  510.   #SET(%NewProcedureName,'Update' & %NewProcedureFile)
  511. #ELSE
  512.   #SET(%NewProcedureName,%OverrideProcedureName)
  513. #ENDIF
  514. #IF(NOT %ReplaceExistingProcedures)
  515.   #FIX(%Procedure,%NewProcedureName)
  516. #ENDIF
  517. #IF(NOT %Procedure)
  518.   #FIX(%ProcedureList,%NewProcedureName)
  519.   #IF(NOT %ProcedureList)
  520.     #ADD(%ProcedureList,%NewProcedureName)
  521.     #SET(%QuickProcedureType,'Clarion Form')
  522.     #SET(%QuickProcedurePrimary,%NewProcedureFile)
  523.     #SET(%QuickProcedureDescription,'Update the ' & %NewProcedureFile & ' File')
  524.     #SET(%QuickProcedureDefault,'Update Form')
  525.     #SET(%QuickProcedureWindow,%True)
  526.   #ENDIF
  527. #ENDIF
  528. #!-------------------------------------------------------
  529. #GROUP(%AddReportProcedure,%NewProcedurePrimary)
  530. #DECLARE(%NewProcedureName)
  531. #FIX(%File,%NewProcedurePrimary)
  532. #IF(%File)
  533.   #SET(%NewProcedureName,'Print' & %File)
  534. #ELSE
  535.   #FIND(%Key,%NewProcedurePrimary)
  536.   #SET(%NewProcedureName,'Print' & %Key)
  537. #ENDIF
  538. #IF(NOT %ReplaceExistingProcedures)
  539.   #FIX(%Procedure,%NewProcedureName)
  540. #ENDIF
  541. #IF(NOT %Procedure)
  542.   #FIX(%ProcedureList,%NewProcedureName)
  543.   #IF(NOT %ProcedureList)
  544.     #ADD(%ProcedureList,%NewProcedureName)
  545.     #SET(%QuickProcedureType,'Clarion Report')
  546.     #SET(%QuickProcedurePrimary,%File)
  547.     #SET(%QuickProcedurePrimaryKey,%Key)
  548.     #IF(%Key)
  549.       #SET(%QuickProcedureDescription,'Print the ' & %File & ' File by ' & %Key)
  550.     #ELSE
  551.       #SET(%QuickProcedureDescription,'Print the ' & %File & ' File')
  552.     #ENDIF
  553.     #SET(%QuickProcedureDefault,'Report')
  554.     #SET(%QuickProcedureReport,%True)
  555.   #ENDIF
  556. #ENDIF
  557. #!--------------------------------------------------------------------------
  558. #INCLUDE('WField.TPW')
  559. #INCLUDE('WFrame.TPW')
  560. #INCLUDE('WReport.TPW')
  561. #INCLUDE('WStart.TPW')
  562. #INCLUDE('WApp.TPW')
  563. #INCLUDE('WDefault.TPW')
  564. #!
  565. #!
  566. #!
  567. #!
  568. #!--------------------------------------------------------------------------
  569. #!
  570. #!Replacement for WPROC.TPW
  571. #!
  572. #!--------------------------------------------------------------------------
  573. #GROUP(%QuickDeclareProcedure)
  574. #DECLARE(%Parameters,%ProcedureList)
  575. #DECLARE(%ReturnValue,%ProcedureList)
  576. #DECLARE(%WindowOperationMode,%ProcedureList)
  577. #DECLARE(%INISaveWindow,%ProcedureList)
  578. #DECLARE(%WindowMessage,%ProcedureList)
  579. #DECLARE(%EnablePrintPreview,%ProcedureList)
  580. #DECLARE(%EnableQuickScan,%ProcedureList)
  581. #!---------------------------------------------------
  582. #GROUP(%GenerateProcedurePrompts)
  583. [PROMPTS]
  584. #IF(%Parameters)
  585. %%Parameters STRING  ('%Parameters')
  586. #ENDIF
  587. #IF(%ReturnValue)
  588. %%ReturnValue STRING  ('%ReturnValue')
  589. #ENDIF
  590. #IF(%WindowOperationMode)
  591. %%WindowOperationMode STRING  ('%WindowOperationMode')
  592. #ENDIF
  593. #IF(%INISaveWindow)
  594. %%INISaveWindow LONG  (%INISaveWindow)
  595. #ENDIF
  596. #IF(%WindowMessage)
  597. %%WindowMessage STRING  ('%WindowMessage')
  598. #ENDIF
  599. #IF(%EnablePrintPreview)
  600. %%EnablePrintPreview LONG  (%EnablePrintPreview)
  601. #ENDIF
  602. #IF(%EnableQuickScan)
  603. %%EnableQuickScan LONG  (%EnableQuickScan)
  604. #ENDIF
  605. #!--------------------------------------------------------------------------
  606. #GROUP(%GenerateProcedureHeader)
  607. [PROCEDURE]
  608. NAME %ProcedureList
  609. [COMMON]
  610. DESCRIPTION '%QuickProcedureDescription'
  611. FROM %QuickProcedureType
  612. #SUSPEND
  613. [DATA]
  614. #FOR(%ProcedureDataItemID)
  615. %[25]ProcedureDataItem %ProcedureDataItemType
  616. #ENDFOR
  617. #RESUME
  618. #!
  619. #!
  620. #!
  621. #!
  622. #!--------------------------------------------------------------------------
  623. #!
  624. #!Replacement for WCONTROL.TPW
  625. #!
  626. #!--------------------------------------------------------------------------
  627. #GROUP(%GenerateAdditionPrompts)
  628. #FOR(%QuickTemplateInstance)
  629.   #CASE(%QuickTemplateType)
  630.   #OF('ASCIIBox')
  631.   #OF('ASCIIPrintButton')
  632.   #OF('ASCIISearchButton')
  633.   #OF('BrowseBox')
  634. #INSERT(%QuickGenerateBrowseBox)
  635.   #OF('OrderCWTab')
  636. #INSERT(%QuickGenerateOrderCWTab)
  637.   #OF('PBOptionsExtension')
  638. #INSERT(%QuickGeneratePBOptionsExtension)
  639.   #OF('BrowseSelectButton')
  640. #INSERT(%QuickGenerateBrowseSelectButton)
  641.   #OF('BrowseUpdateButton')
  642. #INSERT(%QuickGenerateBrowseUpdateButton)
  643.   #OF('CancelButton')
  644. #INSERT(%QuickGenerateCancelButton)
  645.   #OF('CloseButton')
  646. #INSERT(%QuickGenerateCloseButton)
  647.   #OF('DOSFileLookup')
  648.   #OF('FieldLookupButton')
  649.   #OF('SaveButton')
  650. #INSERT(%QuickGenerateSaveButton)
  651.   #OF('DateTimeDisplay')
  652.   #OF('RecordValidation')
  653. #INSERT(%QuickGenerateRecordValidation)
  654.   #ENDCASE
  655. #ENDFOR
  656. #!-------------------------------------------------------------
  657. #GROUP(%QuickDeclareAdditions)
  658. #INSERT(%QuickDeclareASCIIBox)
  659. #INSERT(%QuickDeclareASCIIPrintButton)
  660. #INSERT(%QuickDeclareASCIISearchButton)
  661. #INSERT(%QuickDeclareBrowseBox)
  662. #INSERT(%QuickDeclareBrowseUpdateButton)
  663. #INSERT(%QuickDeclareBrowseSelectButton)
  664. #INSERT(%QuickDeclareDOSFileLookup)
  665. #INSERT(%QuickDeclareFileDrop)
  666. #INSERT(%QuickDeclareFieldLookupButton)
  667. #INSERT(%QuickDeclareSaveButton)
  668. #INSERT(%QuickDeclareDateTimeDisplay)
  669. #INSERT(%QuickDeclareRecordValidation)
  670. #INSERT(%QuickDeclareOrderCWTab)
  671. #INSERT(%QuickDeclarePBOptionsExtension)
  672. #!-------------------------------------------------------------
  673. #GROUP(%QuickDeclareASCIIBox)
  674. #DECLARE(%ASCIIBoxControl,%QuickTemplateInstance)
  675. #DECLARE(%ASCIIBoxDescription,%ASCIIBoxControl)
  676. #DECLARE(%ASCIIBoxFileName,%ASCIIBoxControl)
  677. #DECLARE(%ASCIIBoxDisplayBytes,%ASCIIBoxControl)
  678. #DECLARE(%ASCIIBoxWarning,%ASCIIBoxControl)
  679. #!-------------------------------------------------------------
  680. #GROUP(%QuickDeclareASCIIPrintButton)
  681. #DECLARE(%PrintParentASCIIBoxInstance,%QuickTemplateInstance)
  682. #DECLARE(%ASCIIPrintButtonControl,%QuickTemplateInstance)
  683. #DECLARE(%ASCIIPrintButtonParent,%ASCIIPrintButtonControl)
  684. #!-------------------------------------------------------------
  685. #GROUP(%QuickDeclareASCIISearchButton)
  686. #DECLARE(%SearchParentASCIIBoxInstance,%QuickTemplateInstance)
  687. #DECLARE(%ASCIIFindControl,%QuickTemplateInstance)
  688. #DECLARE(%ASCIINextControl,%ASCIIFindControl)
  689. #DECLARE(%ASCIIFindButtonParent,%ASCIIFindControl)
  690. #!-------------------------------------------------------------
  691. #GROUP(%QuickDeclareBrowseSelectButton)
  692. #DECLARE(%HideIfDisabled,%QuickTemplateInstance)
  693. #!-------------------------------------------------------------
  694. #GROUP(%QuickSetBrowseSelectButton)
  695. #SET(%HoldConstruct,%QuickTemplateInstance)
  696. #ADD(%QuickTemplateInstance,ITEMS(%QuickTemplateInstance)+1)
  697. #SET(%QuickTemplateType,'BrowseSelectButton')
  698. #SET(%QuickTemplateProcProp,0)
  699. #SET(%QuickTemplateParent,%HoldConstruct)
  700. #ADD(%QuickTemplateControl,'?Select:' & %QuickTemplateInstance)
  701. #SET(%HideIfDisabled,1)
  702. #!-------------------------------------------------------------
  703. #GROUP(%QuickGenerateBrowseSelectButton)
  704. [ADDITION]
  705. NAME ToolCraft SelectButton
  706. [INSTANCE]
  707. INSTANCE %QuickTemplateInstance
  708. PARENT %QuickTemplateParent
  709. #IF(%QuickTemplateProcProp)
  710. PROCPROP
  711. #ENDIF
  712. [PROMPTS]
  713. %%HideIfDisabled LONG  (%HideIfDisabled)
  714. #!-------------------------------------------------------------
  715. #GROUP(%QuickDeclareBrowseUpdateButton)
  716. #DECLARE(%UpdateButtonDefault,%QuickTemplateInstance)
  717. #DECLARE(%EditViaPopup,%QuickTemplateInstance)
  718. #!-------------------------------------------------------------
  719. #GROUP(%QuickSetBrowseUpdateButton,%QuickUpdatePopupMenu,%QuickUpdateButtonDefault)
  720. #SET(%HoldConstruct,%QuickTemplateInstance)
  721. #ADD(%QuickTemplateInstance,ITEMS(%QuickTemplateInstance)+1)
  722. #SET(%QuickTemplateType,'BrowseUpdateButton')
  723. #SET(%QuickTemplateProcProp,%False)
  724. #SET(%QuickTemplateParent,%HoldConstruct)
  725. #ADD(%QuickTemplateControl,'?Insert:' & %QuickTemplateInstance)
  726. #ADD(%QuickTemplateControl,'?Change:' & %QuickTemplateInstance)
  727. #ADD(%QuickTemplateControl,'?Delete:' & %QuickTemplateInstance)
  728. #SET(%HideIfDisabled,1)
  729. #SET(%UpdateButtonDefault,%QuickUpdateButtonDefault)
  730. #SET(%EditViaPopup,%QuickUpdatePopupMenu)
  731. #!-------------------------------------------------------------
  732. #GROUP(%QuickGenerateBrowseUpdateButton)
  733. [ADDITION]
  734. NAME ToolCraft UpdateButtons
  735. [INSTANCE]
  736. INSTANCE %QuickTemplateInstance
  737. PARENT %QuickTemplateParent
  738. #IF(%QuickTemplateProcProp)
  739. PROCPROP
  740. #ENDIF
  741. [PROMPTS]
  742. #!-------------------------------------------------------------
  743. #GROUP(%QuickSetCloseButton)
  744. #ADD(%QuickTemplateInstance,ITEMS(%QuickTemplateInstance)+1)
  745. #SET(%QuickTemplateType,'CloseButton')
  746. #SET(%QuickTemplateProcProp,%False)
  747. #ADD(%QuickTemplateControl,'?Close')
  748. #!-------------------------------------------------------------
  749. #GROUP(%QuickGenerateCloseButton)
  750. [ADDITION]
  751. NAME Clarion CloseButton
  752. [INSTANCE]
  753. INSTANCE %QuickTemplateInstance
  754. #!-------------------------------------------------------------
  755. #GROUP(%QuickSetCancelButton)
  756. #ADD(%QuickTemplateInstance,ITEMS(%QuickTemplateInstance)+1)
  757. #SET(%QuickTemplateType,'CancelButton')
  758. #SET(%QuickTemplateProcProp,%False)
  759. #ADD(%QuickTemplateControl,'?Cancel')
  760. #!-------------------------------------------------------------
  761. #GROUP(%QuickGenerateCancelButton)
  762. [ADDITION]
  763. NAME Clarion CancelButton
  764. [INSTANCE]
  765. INSTANCE %QuickTemplateInstance
  766. #!-------------------------------------------------------------
  767. #GROUP(%QuickDeclareBrowseBox)
  768. #!
  769. #DECLARE(%QBBPrimary,%QuickTemplateInstance)
  770. #DECLARE(%QBBKeyList,%QuickTemplateInstance),MULTI
  771. #DECLARE(%QBBKeyListID,%QBBKeyList)
  772. #DECLARE(%QBBSortID,%QBBKeyList)
  773. #DECLARE(%QBBLocator,%QBBKeyList)
  774. #DECLARE(%QBBRangeField,%QBBKeyList)
  775. #DECLARE(%QBBRangeFile,%QBBKeyList)
  776. #DECLARE(%QBBParentFound,%QuickTemplateInstance)
  777. #DECLARE(%QBBFrom,%QuickTemplateInstance)
  778. #DECLARE(%QBBFormat,%QuickTemplateInstance)
  779. #DECLARE(%QBBFields,%QuickTemplateInstance)
  780. #DECLARE(%QBBWidth,%QuickTemplateInstance)
  781. #DECLARE(%QBBUpdateProcedure,%QuickTemplateInstance)
  782. #DECLARE(%CurrentBrowseBoxInstance)
  783. #DECLARE(%PopulatedFieldCount)
  784. #!-------------------------------------------------------------
  785. #GROUP(%QuickSetBrowseBox,%PassedBrowseFile,%PassedProcProp,%PassedAccessKey,%QuickUpdateProcedure)
  786. #!
  787. #ADD(%QuickTemplateInstance,ITEMS(%QuickTemplateInstance)+1)
  788. #SET(%QuickTemplateType,'BrowseBox')
  789. #SET(%QuickTemplateProcProp,%PassedProcProp)
  790. #SET(%QuickTemplatePrimary,%PassedBrowseFile)
  791. #SET(%QBBUpdateProcedure,%QuickUpdateProcedure)
  792. #FIX(%FileList,%QuickTemplatePrimary)
  793. #SET(%QuickBrowseListCount,%QuickBrowseListCount+1)
  794. #IF(NOT ITEMS(%RelationList))
  795.   #ADD(%QuickTemplateControl,'?List')
  796.   #SET(%QBBFrom,'BRWQ')
  797. #ELSE
  798.   #ADD(%QuickTemplateControl,'?List' & %QuickBrowseListCount)
  799.   #SET(%QBBFrom,'BRWQ' & %QuickBrowseListCount)
  800. #ENDIF
  801. #SET(%QBBWidth,0)
  802. #SET(%QBBFields,'')
  803. #SET(%QBBFormat,'')
  804. #FREE(%QBBKeyList)
  805. #SET(%ValueConstruct,0)
  806. #FIX(%FileList,%QuickTemplatePrimary)
  807. #SET(%PopulatedFieldCount,0)
  808. #FOR(%FieldListID),WHERE(%FieldListBrowseWidth)
  809.   #SET(%PopulatedFieldCount,%PopulatedFieldCount + 1)
  810.   #IF(%PopulatedFieldCount = %MaximumBrowseFields)
  811.     #BREAK
  812.   #ENDIF
  813.   #SET(%QBBFields,%QBBFields & ',' & %FieldList)
  814.   #SET(%QBBWidth,%QBBWidth + %FieldListBrowseWidth)
  815.   #SET(%QBBFormat,%QBBFormat & %FieldListBrowseWidth & %FieldListJustification & '|M~' & %FieldListHeader & '~' & %FieldListPicture & '@')
  816. #ENDFOR
  817. #SET(%QBBFields,SUB(%QBBFields,2,LEN(%QBBFields)-1))
  818. #FIX(%FileList,%QuickTemplatePrimary)
  819. #FIX(%File,%QuickTemplatePrimary)
  820. #IF(%PassedAccessKey)
  821.   #FOR(%KeyListID)
  822.     #IF(%KeyList = %PassedAccessKey)
  823.       #ADD(%QBBKeyList,%PassedAccessKey)
  824.       #SET(%QBBSortID,1)
  825.       #SET(%QBBKeyListID,%KeyListID)
  826.       #BREAK
  827.     #ENDIF
  828.   #ENDFOR
  829. #ELSE
  830.   #FOR(%KeyListID),WHERE(NOT %KeyListNoPopulate)
  831.     #SET(%ValueConstruct,%False)
  832.     #IF(ITEMS(%KeyListField))
  833.       #SET(%ValueConstruct,%True)
  834.     #ENDIF
  835.     #ADD(%QBBKeyList,%KeyList)
  836.     #IF(ITEMS(%QBBKeyList)=1)
  837.       #SET(%QBBSortID,ITEMS(%Key))
  838.     #ELSE
  839.       #SET(%QBBSortID,ITEMS(%QBBKeyList)-1)
  840.     #ENDIF
  841.     #SET(%QBBKeyListID,%KeyListID)
  842.   #ENDFOR
  843. #ENDIF
  844. #IF(ITEMS(%QBBKeyList))
  845.   #SET(%QBBParentFound,%False)
  846.   #FOR(%QBBKeyList)
  847.     #FIX(%KeyListID,%QBBKeyListID)
  848.     #SET(%QBBLocator,%True)
  849.     #IF(%QuickBrowseParentHandling <> 'Do not select by parent record')
  850.       #FOR(%Relation),WHERE(%FileRelationType='MANY:1' AND %FileKey=%KeyList)
  851.         #SET(%QBBLocator,%False)
  852.         #SET(%QBBParentFound,%True)
  853.         #ADD(%QuickOtherFiles,%Relation)
  854.         #SET(%QBBRangeFile,%Relation)
  855.         #FOR(%RelationKeyField)
  856.           #IF(NOT(%RelationKeyField))
  857.             #SET(%QBBLocator,%True)
  858.             #BREAK
  859.           #ELSE
  860.             #SET(%QBBRangeField,%RelationKeyFieldLink)
  861.           #ENDIF
  862.         #ENDFOR
  863.       #ENDFOR
  864.     #ENDIF
  865.   #ENDFOR
  866. #ENDIF
  867. #SELECT(%QBBKeyList,1)
  868. #SET(%QuickTemplatePrimaryKey,%QBBKeyList)
  869. #IF(ITEMS(%QBBKeyList) > 1)
  870.   #SET(%QuickBrowseOrderCWTab,%True)
  871. #ELSE
  872.   #SET(%QuickBrowseOrderCWTab,%False)
  873. #ENDIF
  874. #!-------------------------------------------------------------
  875. #GROUP(%QuickGenerateBrowseBox)
  876. [ADDITION]
  877. NAME ToolCraft BrowseBox
  878. [INSTANCE]
  879. INSTANCE %QuickTemplateInstance
  880. #IF(%QuickTemplateProcProp)
  881. PROCPROP
  882. #ENDIF
  883. [PROMPTS]
  884. #FIX(%File,%QuickTemplatePrimary)
  885. %%EnableQuickScan LONG  (0)
  886.  
  887. #SELECT(%QBBKeyList,1)
  888. #IF(%QBBLocator)
  889. %%LocatorType DEFAULT  ('Step')
  890. #ELSE
  891. %%LocatorType DEFAULT  ('')
  892. #ENDIF
  893.  
  894. %%UpdateProcedure PROCEDURE  (%QBBUpdateProcedure)
  895.  
  896. %%RecordFilter @S255  ('')
  897.  
  898. %%RangeField COMPONENT  (%QBBRangeField)
  899.  
  900. #IF(ITEMS(%QBBKeyList) < 2)
  901. %%UsingMultiDisplay LONG (0)
  902.   #IF(%QBBRangeField)
  903. %%RangeLimitType DEFAULT  ('File Relationship')
  904.   #ELSE
  905. %%RangeLimitType DEFAULT  ('')
  906.   #ENDIF
  907. %%RangeLimit FIELD  ()
  908. %%RangeLow FIELD  ()
  909. %%RangeHigh FIELD  ()
  910. %%RangeFile FILE  (%QBBRangeFile)
  911. %%ScrollBehavior DEFAULT  ('Fixed Thumb')
  912. %%ScrollKeyDistribution STRING  ('')
  913. #ELSE
  914. %%UsingMultiDisplay LONG (1)
  915.   #SET(%ValueConstruct,'')
  916.   #FOR(%QBBKeyList)
  917.     #SET(%ValueConstruct,%ValueConstruct & ',' & INSTANCE(%QBBKeyList))
  918.   #ENDFOR
  919.   #SET(%ValueConstruct,SUB(%ValueConstruct,2,LEN(%ValueConstruct)-1))
  920. %%ChangeOrderControl DEFAULT  ('?ChangeOrder')
  921.  
  922. %%AltFormats MULTI LONG  (%ValueConstruct)
  923. #INSERT(%QuickGenBrowseBoxSort,'OrderDescription')
  924. #INSERT(%QuickGenBrowseBoxSort,'OrderKey')
  925. #INSERT(%QuickGenBrowseBoxSort,'AltKeyDisplayOrder')
  926. #INSERT(%QuickGenBrowseBoxSort,'UseAltListBox')
  927. #INSERT(%QuickGenBrowseBoxSort,'AltListBox')
  928. #INSERT(%QuickGenBrowseBoxSort,'AltLocatorType')
  929. #INSERT(%QuickGenBrowseBoxSort,'AltSearchEntryPicture')
  930. #INSERT(%QuickGenBrowseBoxSort,'AltRecordFilter')
  931. #INSERT(%QuickGenBrowseBoxSort,'AltRangeField')
  932. #INSERT(%QuickGenBrowseBoxSort,'AltRangeLimitType')
  933. #INSERT(%QuickGenBrowseBoxSort,'AltRangeLimit')
  934. #INSERT(%QuickGenBrowseBoxSort,'AltRangeLow')
  935. #INSERT(%QuickGenBrowseBoxSort,'AltRangeHigh')
  936. #INSERT(%QuickGenBrowseBoxSort,'AltRangeFile')
  937. #INSERT(%QuickGenBrowseBoxSort,'AltScrollBehavior')
  938. #ENDIF
  939. #!--------------------------------------------------------------------------
  940. #GROUP(%QuickGenBrowseBoxSort,%CurrentPlace)
  941. #SET(%ValueConstruct,ITEMS(%QBBKeyList))
  942. #CASE(%CurrentPlace)
  943. #OF('OrderDescription')
  944. %%OrderDescription DEPEND %%AltFormats @S255 TIMES %ValueConstruct
  945. #OF('OrderKey')
  946. %%OrderKey DEPEND %%AltFormats KEY TIMES %ValueConstruct
  947. #OF('AltKeyDisplayOrder')
  948. %%AltKeyDisplayOrder DEPEND %%AltFormats STRING TIMES %ValueConstruct
  949. #OF('UseAltListBox')
  950. %%UseAltListBox DEPEND %%AltFormats LONG TIMES %ValueConstruct
  951. #OF('AltListBox')
  952. %%AltListBox DEPEND %%AltFormats FIELD TIMES %ValueConstruct
  953. #OF('AltLocatorType')
  954. %%AltLocatorType DEPEND %%AltFormats STRING TIMES %ValueConstruct
  955. #OF('AltSearchEntryPicture')
  956. %%AltSearchEntryPicture DEPEND %%AltFormats @S30 TIMES %ValueConstruct
  957. #OF('AltRecordFilter')
  958. %%AltRecordFilter DEPEND %%AltFormats @S180 TIMES %ValueConstruct
  959. #OF('AltRangeField')
  960. %%AltRangeField DEPEND %%AltFormats COMPONENT TIMES %ValueConstruct
  961. #OF('AltRangeLimitType')
  962. %%AltRangeLimitType DEPEND %%AltFormats STRING TIMES %ValueConstruct
  963. #OF('AltRangeLimit')
  964. %%AltRangeLimit DEPEND %%AltFormats @S100 TIMES %ValueConstruct
  965. #OF('AltRangeLow')
  966. %%AltRangeLow DEPEND %%AltFormats @S100 TIMES %ValueConstruct
  967. #OF('AltRangeHigh')
  968. %%AltRangeHigh DEPEND %%AltFormats @S100 TIMES %ValueConstruct
  969. #OF('AltRangeFile')
  970. %%AltRangeFile DEPEND %%AltFormats FILE TIMES %ValueConstruct
  971. #OF('AltScrollBehavior')
  972. %%AltScrollBehavior DEPEND %%AltFormats STRING TIMES %ValueConstruct
  973. #ENDCASE
  974. #FOR(%QBBKeyList)
  975.   #SET(%ValueConstruct,INSTANCE(%QBBKeyList))
  976.   #SET(%HoldConstruct,INSTANCE(%QBBKeyList))
  977.   #CASE(%CurrentPlace)
  978.   #OF('OrderDescription')
  979.     #FIX(%KeyListID,%QBBKeyListID)
  980. WHEN  (%ValueConstruct) ('%KeyListTab')
  981.   #OF('OrderKey')
  982. WHEN  (%ValueConstruct) (%QBBKeyList)
  983.   #OF('AltKeyDisplayOrder')
  984. WHEN  (%ValueConstruct) ('Normal')
  985.   #OF('UseAltListBox')
  986. WHEN  (%ValueConstruct) (0)
  987.   #OF('AltListBox')
  988. WHEN  (%ValueConstruct) ()
  989.   #OF('AltLocatorType')
  990.     #IF(%QBBLocator)
  991. WHEN  (%ValueConstruct) ('Step')
  992.     #ELSE
  993. WHEN  (%ValueConstruct) ('')
  994.     #ENDIF
  995.   #OF('AltSearchEntryPicture')
  996. WHEN  (%ValueConstruct) ()
  997.   #OF('AltRecordFilter')
  998. WHEN  (%ValueConstruct) ()
  999.   #OF('AltRangeField')
  1000. WHEN  (%ValueConstruct) (%QBBRangeField)
  1001.   #OF('AltRangeLimitType')
  1002.     #IF(%QBBRangeField)
  1003. WHEN  (%ValueConstruct) ('File Relationship')
  1004.     #ELSE
  1005. WHEN  (%ValueConstruct) ('')
  1006.     #ENDIF
  1007.   #OF('AltRangeLimit')
  1008. WHEN  (%ValueConstruct) ()
  1009.   #OF('AltRangeLow')
  1010. WHEN  (%ValueConstruct) ()
  1011.   #OF('AltRangeHigh')
  1012. WHEN  (%ValueConstruct) ()
  1013.   #OF('AltRangeFile')
  1014. WHEN  (%ValueConstruct) (%QBBRangeFile)
  1015.   #OF('AltScrollBehavior')
  1016. WHEN  (%ValueConstruct) ('Fixed Thumb')
  1017.   #ENDCASE
  1018. #ENDFOR
  1019.  
  1020. #!-------------------------------------------------------------
  1021. #GROUP(%QuickDeclareDOSFileLookup)
  1022. #!-------------------------------------------------------------
  1023. #GROUP(%QuickDeclareFileDrop)
  1024. #!-------------------------------------------------------------
  1025. #GROUP(%QuickDeclareFieldLookupButton)
  1026. #DECLARE(%FLBControlToLookup,%QuickTemplateInstance)
  1027. #!-------------------------------------------------------------
  1028. #GROUP(%QuickSetFieldLookupButton)
  1029. #ADD(%QuickTemplateInstance,ITEMS(%QuickTemplateInstance)+1)
  1030. #SET(%QuickTemplateType,'FieldLookupButton')
  1031. #SET(%QuickTemplateProcProp,%False)
  1032. #SET(%QuickTemplatePrimary,%Null)
  1033. #ADD(%QuickTemplateControl,'?CallLookup:' & %WindowControl)
  1034. #SET(%FLBControlToLookup,%WindowControl)
  1035. #!-------------------------------------------------------------
  1036. #GROUP(%QuickGenerateFieldLookupButton)
  1037. [ADDITION]
  1038. NAME Clarion FieldLookupButton
  1039. [INSTANCE]
  1040. INSTANCE %QuickTemplateInstance
  1041. [PROMPTS]
  1042. %%ControlToLookup PROCEDURE  (%FLBControlToLookup)
  1043. #!-------------------------------------------------------------
  1044. #GROUP(%QuickDeclareSaveButton)
  1045. #DECLARE(%QSBInsertAllowed,%QuickTemplateInstance)
  1046. #DECLARE(%QSBChangeAllowed,%QuickTemplateInstance)
  1047. #DECLARE(%QSBDeleteAllowed,%QuickTemplateInstance)
  1048. #DECLARE(%QSBActionOnDelete,%QuickTemplateInstance)
  1049. #DECLARE(%QSBInsertMessage,%QuickTemplateInstance)
  1050. #DECLARE(%QSBChangeMessage,%QuickTemplateInstance)
  1051. #DECLARE(%QSBDeleteMessage,%QuickTemplateInstance)
  1052. #DECLARE(%QSBActionOnCancel,%QuickTemplateInstance)
  1053. #DECLARE(%QSBMessageLocation,%QuickTemplateInstance)
  1054. #DECLARE(%QSBMessageStatusSection,%QuickTemplateInstance)
  1055. #DECLARE(%QSBAppendToTitleID,%QuickTemplateInstance)
  1056. #!-------------------------------------------------------------
  1057. #GROUP(%QuickSetSaveButton)
  1058. #ADD(%QuickTemplateInstance,ITEMS(%QuickTemplateInstance)+1)
  1059. #SET(%QuickTemplateType,'SaveButton')
  1060. #SET(%QuickTemplateProcProp,1)
  1061. #SET(%QuickTemplatePrimary,%QuickProcedurePrimary)
  1062. #ADD(%QuickTemplateControl,'?OK')
  1063. #SET(%QSBInsertAllowed,%QuickFormAllowInsert)
  1064. #SET(%QSBChangeAllowed,%QuickFormAllowChange)
  1065. #SET(%QSBDeleteAllowed,%QuickFormAllowDelete)
  1066. #SET(%QSBActionOnDelete,'Standard Warning')
  1067. #SET(%QSBInsertMessage,%QuickFormInsertMessage)
  1068. #SET(%QSBChangeMessage,%QuickFormChangeMessage)
  1069. #SET(%QSBDeleteMessage,%QuickFormDeleteMessage)
  1070. #SET(%QSBActionOnCancel,'Confirm Cancel')
  1071. #SET(%QSBMessageLocation,%QuickFormMessageLocation)
  1072. #IF(%QSBMessageLocation = 'Status Bar')
  1073.   #SET(%QSBMessageStatusSection,2)
  1074. #ELSE
  1075.   #SET(%QSBMessageStatusSection,0)
  1076. #ENDIF
  1077. #IF(%QuickFormAppendToTitleID)
  1078.   #SET(%QSBAppendToTitleID,'!' & %QuickFormAppendToTitleID)
  1079. #ELSE
  1080.   #SET(%QSBAppendToTitleID,'')
  1081. #ENDIF
  1082. #!-------------------------------------------------------------
  1083. #GROUP(%QuickGenerateSaveButton)
  1084. [ADDITION]
  1085. NAME Clarion SaveButton
  1086. [INSTANCE]
  1087. INSTANCE %QuickTemplateInstance
  1088. #IF(%QuickTemplateProcProp)
  1089. PROCPROP
  1090. #ENDIF
  1091. [PROMPTS]
  1092. %%InsertAllowed LONG  (%QSBInsertAllowed)
  1093. %%InsertMessage @S40  ('%QuickFormInsertMessage')
  1094. %%ChangeAllowed LONG  (%QSBChangeAllowed)
  1095. %%ChangeMessage @S40  ('%QuickFormChangeMessage')
  1096. %%DeleteAllowed LONG  (%QSBDeleteAllowed)
  1097. %%DeleteMessage @S40  ('%QuickFormDeleteMessage')
  1098. %%MessageHeader LONG  (0)
  1099. %%ActionOnDelete STRING  ('%QSBActionOnDelete')
  1100. %%PrimingFields MULTI LONG  ()
  1101. %%PrimedField DEPEND %%PrimingFields FIELD TIMES 0
  1102.  
  1103. %%PrimedValue DEPEND %%PrimingFields @S255 TIMES 0
  1104.  
  1105. %%ActionOnCancel STRING  ('%QSBActionOnCancel')
  1106. %%MessageLocation STRING  ('%QSBMessageLocation')
  1107. %%MessageStatusSection @n1  (%QSBMessageStatusSection)
  1108. #IF(%QSBAppendToTitleID)
  1109. %%AppendToTitle LONG  (1)
  1110. %%AppendToTitleID @S255  ('%QSBAppendToTitleID')
  1111. #ELSE
  1112. %%AppendToTitle LONG  ()
  1113. %%AppendToTitleID @S255  ('')
  1114. #ENDIF
  1115. #!-------------------------------------------------------------
  1116. #GROUP(%QuickDeclareDateTimeDisplay)
  1117. !
  1118. #!-------------------------------------------------------------
  1119. #GROUP(%QuickDeclareRecordValidation)
  1120. #DECLARE(%QRVValidateOnAccept)
  1121. #DECLARE(%QRVValidateOnNonStopSelect)
  1122. #!-------------------------------------------------------------
  1123. #GROUP(%QuickSetRecordValidation)
  1124. #ADD(%QuickTemplateInstance,ITEMS(%QuickTemplateInstance)+1)
  1125. #SET(%QuickTemplateType,'RecordValidation')
  1126. #SET(%QRVValidateOnAccept,%QuickFormValidateOnAccept)
  1127. #SET(%QRVValidateOnNonStopSelect,%QuickFormValidateOnNonStopSelect)
  1128. #IF(%QRVValidateOnAccept OR %QRVValidateOnNonStopSelect)
  1129.   #SET(%QuickTemplateProcProp,%True)
  1130. #ENDIF
  1131. #!-------------------------------------------------------------
  1132. #GROUP(%QuickGenerateRecordValidation)
  1133. [ADDITION]
  1134. NAME Clarion RecordValidation
  1135. [INSTANCE]
  1136. INSTANCE %QuickTemplateInstance
  1137. #IF(%QuickTemplateProcProp)
  1138. PROCPROP
  1139. #ENDIF
  1140. [PROMPTS]
  1141. %%ValidateOnAccept LONG  (%QRVValidateOnAccept)
  1142. %%ValidateOnNonStopSelect LONG  (%QRVValidateOnNonStopSelect)
  1143. %%ControlsExcluded MULTI LONG  ()
  1144. %%ControlToExclude DEPEND %%ControlsExcluded STRING TIMES 0
  1145. #!--------------------------------------------------------------------------
  1146. #GROUP(%QuickDeclareOrderCWTab)
  1147. #!-------------------------------------------------------------
  1148. #GROUP(%QuickSetOrderCWTab)
  1149. #ADD(%QuickTemplateInstance,ITEMS(%QuickTemplateInstance)+1)
  1150. #SET(%QuickTemplateType,'OrderCWTab')
  1151. #SET(%QuickTemplateProcProp,0)
  1152. #SET(%QuickTemplateParent,0)
  1153. #ADD(%QuickTemplateControl,'?ChangeOrder')
  1154. #!-------------------------------------------------------------
  1155. #GROUP(%QuickGenerateOrderCWTab)
  1156. [ADDITION]
  1157. NAME ToolCraft OrderCWTab
  1158. [INSTANCE]
  1159. INSTANCE %QuickTemplateInstance
  1160. #!-------------------------------------------------------------
  1161. #GROUP(%QuickDeclarePBOptionsExtension)
  1162. #!--------------------------------------------------------------------------
  1163. #GROUP(%QuickSetPBOptionsExtension)
  1164. #ADD(%QuickTemplateInstance,ITEMS(%QuickTemplateInstance)+1)
  1165. #SET(%QuickTemplateType,'PBOptionsExtension')
  1166. #SET(%QuickTemplateProcProp,0)
  1167. #SET(%QuickTemplateParent,0)
  1168. #!-------------------------------------------------------------
  1169. #GROUP(%QuickGeneratePBOptionsExtension)
  1170. [ADDITION]
  1171. NAME ToolCraft PowerBrowseOptions
  1172. [INSTANCE]
  1173. INSTANCE %QuickTemplateInstance
  1174. [PROMPTS]
  1175. %%AlwaysMaximizeOnOpen LONG  (0)
  1176. %%SpecifyFirstField LONG  (0)
  1177. %%FirstFieldToSelect DEFAULT  ('')
  1178. %%EnableWindowResize LONG  (0)
  1179. %%ResizeListBox DEFAULT  ('')
  1180. %%EnableSecondaryResize LONG  (0)
  1181. %%SecondaryResizeListBox DEFAULT  ('')
  1182. #!-------------------------------------------------------------
  1183. #GROUP(%PopulateControlTemplate)
  1184. #CASE(%QuickTemplateType)
  1185. #OF('ASCIIBox')
  1186. #OF('ASCIIPrintButton')
  1187. #OF('ASCIISearchButton')
  1188. #OF('BrowseBox')
  1189.  LIST,AT(%WindowControlXOffset,%WindowControlYOffset,%WindowControlWidth,%WindowControlHeight),USE(%QuickTemplateControl),MSG('Browsing Records'),IMM,HVSCROLL,|
  1190.    FORMAT('%'QBBFormat'),|
  1191.    FROM(%QBBFrom),#SEQ(%QuickTemplateInstance),#ORIG(?List),#FIELDS(%QBBFields)
  1192. #OF('OrderCWTab')
  1193.   #SUSPEND
  1194.   #?SHEET,AT(%DefaultXOffset,%DefaultYOffset,%WorksheetWidth,%WorksheetHeight),USE(?ChangeOrder),#ORIG(?ChangeOrder),#SEQ(%QuickTemplateInstance)
  1195.   #FOR(%WindowLayerID),WHERE(%WindowLayerID =< %HighestUserLevel AND %WindowLayerID > %LayerPreSheet)
  1196.     TAB('%WindowLayerTabText'),#SEQ(%QuickTemplateInstance)
  1197.       #INSERT(%ConstructWindowLayer)
  1198.     END
  1199.   #ENDFOR
  1200.   #?END
  1201.   #RESUME
  1202. #OF('BrowseSelectButton')
  1203.  BUTTON('%DefaultSelectControlText'),AT(%WindowControlXOffset,%WindowControlYOffset,%WindowControlWidth,%WindowControlHeight),USE(%WindowControl),#SEQ(%QuickTemplateInstance),#ORIG(?Select)
  1204. #OF('BrowseUpdateButton')
  1205.   #CASE(SUB(%WindowControl,1,7))
  1206.   #OF('?Insert')
  1207.  BUTTON('%DefaultInsertControlText'),AT(%WindowControlXOffset,%WindowControlYOffset,%WindowControlWidth,%WindowControlHeight),USE(%WindowControl),#SEQ(%QuickTemplateInstance),#ORIG(?Insert),#LINK(?Change:%QuickTemplateInstance)
  1208.   #OF('?Change')
  1209.     #IF(%UpdateButtonDefault)
  1210.  BUTTON('%DefaultChangeControlText'),AT(%WindowControlXOffset,%WindowControlYOffset,%WindowControlWidth,%WindowControlHeight),USE(%WindowControl),DEFAULT,#SEQ(%QuickTemplateInstance),#ORIG(?Change),#LINK(?Delete:%QuickTemplateInstance)
  1211.     #ELSE
  1212.  BUTTON('%DefaultChangeControlText'),AT(%WindowControlXOffset,%WindowControlYOffset,%WindowControlWidth,%WindowControlHeight),USE(%WindowControl),#SEQ(%QuickTemplateInstance),#ORIG(?Change),#LINK(?Delete:%QuickTemplateInstance)
  1213.     #ENDIF
  1214.   #OF('?Delete')
  1215.  BUTTON('%DefaultDeleteControlText'),AT(%WindowControlXOffset,%WindowControlYOffset,%WindowControlWidth,%WindowControlHeight),USE(%WindowControl),#SEQ(%QuickTemplateInstance),#ORIG(?Delete),#LINK(?Insert:%QuickTemplateInstance)
  1216.   #ENDCASE
  1217. #OF('CancelButton')
  1218.  BUTTON('%DefaultCancelControlText'),AT(%WindowControlXOffset,%WindowControlYOffset,%WindowControlWidth,%WindowControlHeight),USE(%WindowControl),#SEQ(%QuickTemplateInstance),#ORIG(%WindowControl)
  1219. #OF('CloseButton')
  1220.  BUTTON('%DefaultCloseControlText'),AT(%WindowControlXOffset,%WindowControlYOffset,%WindowControlWidth,%WindowControlHeight),USE(%WindowControl),#SEQ(%QuickTemplateInstance),#ORIG(%WindowControl)
  1221. #OF('DOSFileLookup')
  1222. #OF('FieldLookupButton')
  1223.  BUTTON('...'),AT(%WindowControlXOffset,%WindowControlYOffset,%DefaultControlHeight,%DefaultControlHeight),USE(%WindowControl)
  1224. #OF('SaveButton')
  1225.  BUTTON('%DefaultOKControlText'),AT(%WindowControlXOffset,%WindowControlYOffset,%WindowControlWidth,%WindowControlHeight),USE(%WindowControl),DEFAULT,#SEQ(%QuickTemplateInstance),#ORIG(%WindowControl)
  1226. #ENDCASE
  1227. #!
  1228. #!
  1229. #!
  1230. #!
  1231. #!--------------------------------------------------------------------------
  1232. #!
  1233. #!Replacement for WBROWSE.TPW
  1234. #!
  1235. #!--------------------------------------------------------------------------
  1236. #UTILITY(PowerBrowseWizard,'Create a new record browsing procedure'),WIZARD
  1237. #!
  1238. #SHEET
  1239.   #TAB('Power Browse Wizard')
  1240.     #IMAGE('ROLBRWS.BMP')
  1241.     #DISPLAY('This wizard will help you quickly create a new record browsing (Browse) procedure.'),AT(90,8,235,24)
  1242.     #DISPLAY('To begin creating your new Browse procedure, click Next.'),AT(90)
  1243.   #ENDTAB
  1244.   #TAB('Power Browse Wizard - Procedure Name'),WHERE(~%QuickProcedure)
  1245.     #IMAGE('CMPBRWS.BMP')
  1246.     #PROMPT('What name should be used as the label of this browse procedure?',@S100),%QuickBrowsePromptProcedureName,AT(90,23,235),PROMPTAT(90,8,235)
  1247.     #VALIDATE(%QuickBrowsePromptProcedureName,'You must supply a procedure name!')
  1248.   #ENDTAB
  1249.   #TAB('Power Browse Wizard - File Access'),FINISH(1)
  1250.     #IMAGE('WINBRWS1.BMP')
  1251.     #PROMPT('Which file do you want to browse?',FILE),%QuickBrowsePromptPrimaryFile,AT(90,23,235),PROMPTAT(90,8,235)
  1252.     #VALIDATE(%QuickBrowsePromptPrimaryFile,'You must supply a file to browse!')
  1253.   #ENDTAB
  1254.   #TAB('Power Browse Wizard - Key Sequence'),FINISH(1)
  1255.     #IMAGE('WINBRWS2.BMP')
  1256.     #DISPLAY('You can browse a file using a single record key or you can use all of the record keys declared for a file.'),AT(90,8,235,20)
  1257.     #DISPLAY('If you use all the keys, they will be placed on tab controls that change the sequence of records displayed in the list box.'),AT(90,,235,20)
  1258.     #PROMPT('&Browse using all record keys',CHECK),%QuickBrowsePromptKeyAccess,AT(90,,180),DEFAULT(1)
  1259.     #ENABLE(%QuickBrowsePromptKeyAccess = %False),CLEAR
  1260.       #PROMPT('&Access Key:',KEY(%QuickBrowsePromptPrimaryFile)),%QuickBrowsePromptPrimaryKey,PROMPTAT(90),AT(200,,125)
  1261.       #VALIDATE(%QuickBrowsePromptPrimaryKey,'You must supply a key to use to access the file!')
  1262.     #ENDENABLE
  1263.   #ENDTAB
  1264.   #TAB('Power Browse Wizard - Update Procedure'),FINISH(1)
  1265.     #IMAGE('WINBRWS3.BMP')
  1266.     #DISPLAY('The browse procedure can select a record to be processed by an update procedure.  If you enter an update procedure, "Insert", "Change", and "Delete" buttons will be placed in the browse window.'),AT(90,8,235,24)
  1267.     #PROMPT('A&llow the user to update records',CHECK),%QuickBrowsePromptAllowUpdate,AT(90,,180,14),DEFAULT(1)
  1268.     #DISPLAY('You may use the default update procedure name, or you may specify your own procedure name.  To use the default name, leave the Update Procedure blank.'),AT(90,,235,24)
  1269.     #ENABLE(%QuickBrowsePromptAllowUpdate)
  1270.       #PROMPT('&Update Procedure:',@S100),%QuickBrowsePromptUpdateProcedure,PROMPTAT(90),AT(200,,125)
  1271.     #ENDENABLE
  1272.   #ENDTAB
  1273.   #TAB('Power Browse Wizard - Child Files'),FINISH(1)
  1274.     #IMAGE('WINBRWS5.BMP')
  1275.     #DISPLAY('If this browse has one to many relations with any other files in the data dictionary, buttons can be provided to access the child files.'),AT(90,8,235,24)
  1276.     #PROMPT('&Provide buttons for child files',CHECK),%QuickBrowsePromptChildHandling,DEFAULT(1),AT(90,,180)
  1277.   #ENDTAB
  1278.   #TAB('Power Browse Wizard - Parent File Handling'),WHERE(%QuickBrowsePromptKeyAccess = %False),FINISH(1)
  1279.     #IMAGE('WINBRWS.BMP')
  1280.     #DISPLAY('If the Record Key that you specified to use as the Access Key is the key used in a Many:1 relation, (In other words, this file is a child of another file) how do you want the selection of the parent record to take place?'),AT(90,8,235,24)
  1281.     #PROMPT('&Parent Record Selection:',OPTION),%QuickBrowsePromptParentHandling,DEFAULT('Select parent record via button'),AT(90,40,235)
  1282.     #PROMPT('Do not select by parent record',RADIO),AT(100,,140)
  1283.     #PROMPT('Select parent record via button',RADIO),AT(100,,140)
  1284.     #PROMPT('Assume that the parent record is active',RADIO),AT(100,,140)
  1285.   #ENDTAB
  1286.   #TAB('Power Browse Wizard - Select Button'),FINISH(1)
  1287.     #IMAGE('WINBRWS6.BMP')
  1288.     #DISPLAY('A browse procedure can be used to lookup a record for an entry field.  If used for this purpose, the browse window should include a "Select" button.'),AT(90,8,235,24)
  1289.     #PROMPT('&Provide a "Select" button',CHECK),%QuickBrowsePromptSelectButton,DEFAULT(1),AT(90,,180)
  1290.   #ENDTAB
  1291.   #TAB('Power Browse Wizard - Finally...')
  1292.     #IMAGE('CMPBRWS.BMP')
  1293.     #DISPLAY('If you are creating new procedures with names that already exist in your application, the old procedures can be overwritten or the new procedures can be suppressed.'),AT(90,8,235,24)
  1294.     #PROMPT('Overwrite existing procedures',CHECK),%QuickBrowsePromptOverwriteAll,AT(90,,235),DEFAULT(0)
  1295.     #IMAGE('<255,1,4,127>'),AT(90,55)
  1296.     #DISPLAY('The browse procedure will always be overwritten by the browse wizard!'),AT(125,54,200,20)
  1297.   #ENDTAB
  1298. #ENDSHEET
  1299. #!
  1300. #INSERT(%DeclareSymbols)
  1301. #!
  1302. #IF(%QuickProcedure)
  1303.   #SET(%ValueConstruct,%QuickProcedure)
  1304. #ELSE
  1305.   #SET(%ValueConstruct,%QuickBrowsePromptProcedureName)
  1306. #ENDIF
  1307. #SET(%ReplaceExistingProcedures,%QuickBrowsePromptOverwriteAll)
  1308. #ADD(%ProcedureList,%ValueConstruct)
  1309. #SET(%QuickProcedurePrimary,%QuickBrowsePromptPrimaryFile)
  1310. #SET(%QuickProcedureType,'ToolCraft PowerBrowse')
  1311. #SET(%QuickProcedureDescription,'Browse the ' & %QuickProcedurePrimary & ' File')
  1312. #SET(%QuickProcedurePrimaryKey,%QuickBrowsePromptPrimaryKey)
  1313. #SET(%QuickProcedureWindow,%True)
  1314. #IF(%QuickBrowsePromptAllowUpdate)
  1315.   #IF(%QuickBrowsePromptUpdateProcedure)
  1316.     #SET(%QuickBrowseUpdateProcedure,%QuickBrowsePromptUpdateProcedure)
  1317.   #ELSE
  1318.     #SET(%QuickBrowseUpdateProcedure,'Update' & %QuickProcedurePrimary)
  1319.   #ENDIF
  1320. #ENDIF
  1321. #SET(%QuickBrowseUpdatePopupMenu,%False)
  1322. #SET(%QuickBrowseChildHandling,%QuickBrowsePromptChildHandling)
  1323. #SET(%QuickBrowseParentHandling,%QuickBrowsePromptParentHandling)
  1324. #SET(%QuickBrowseSelectButton,%QuickBrowsePromptSelectButton)
  1325. #!
  1326. #!
  1327. #INSERT(%GenerateProcedures)
  1328. #!
  1329. #!-------------------------------------------------------------
  1330. #GROUP(%QuickBrowseDeclarations)
  1331. #DECLARE(%QuickBrowseUpdateProcedure,%ProcedureList)
  1332. #DECLARE(%QuickBrowseUpdatePopupMenu,%ProcedureList)
  1333. #DECLARE(%QuickBrowseCreateUpdate,%ProcedureList)
  1334. #DECLARE(%QuickBrowseChildHandling,%ProcedureList)
  1335. #DECLARE(%QuickBrowseParentHandling,%ProcedureList)
  1336. #DECLARE(%QuickBrowseSelectButton,%ProcedureList)
  1337. #DECLARE(%QuickBrowseOrderCWTab,%ProcedureList)
  1338. #DECLARE(%QuickBrowseListCount,%ProcedureList)
  1339. #!
  1340. #DECLARE(%PrimaryBrowseInstance)
  1341. #DECLARE(%WorksheetLowerEdge)
  1342. #DECLARE(%WorksheetUpperEdge)
  1343. #!--------------------------------------------------------
  1344. #GROUP(%ConstructQuickBrowse)
  1345. #MESSAGE('Determining Secondary Procedures',3)
  1346. #CASE(%QuickProcedureDefault)
  1347. #OF('Primary Browse')
  1348.   #INSERT(%PrimaryBrowseDefaults)
  1349. #OF('Secondary Browse')
  1350.   #INSERT(%SecondaryBrowseDefaults)
  1351. #OF('Select Browse')
  1352.   #INSERT(%SelectBrowseDefaults)
  1353. #ENDCASE
  1354. #IF(%QuickBrowseChildHandling)
  1355.   #FIX(%File,%QuickProcedurePrimary)
  1356.   #FOR(%Relation),WHERE(%FileRelationType = '1:MANY')
  1357.     #IF(%FileKey AND %RelationKey)
  1358.       #SET(%ValueConstruct,%Relation)
  1359.       #INSERT(%AddSecondaryBrowse,%RelationKey)
  1360.       #FIX(%File,%QuickProcedurePrimary)
  1361.       #FIX(%Relation,%ValueConstruct)
  1362.       #FIX(%ProcedureList,%CurrentProcedure)
  1363.     #ENDIF
  1364.   #ENDFOR
  1365. #ENDIF
  1366. #FIX(%ProcedureList,%CurrentProcedure)
  1367. #FIX(%File,%QuickProcedurePrimary)
  1368. #IF(%QuickBrowseParentHandling = 'Select parent record via button')
  1369.   #FOR(%Relation),WHERE(%FileRelationType='MANY:1')
  1370.     #IF(%QuickProcedurePrimaryKey AND %FileKey <> %QuickProcedurePrimaryKey)
  1371.       #CYCLE
  1372.     #ELSIF(NOT %FileKey)
  1373.       #CYCLE
  1374.     #ENDIF
  1375.     #SET(%ValueConstruct,%Relation)
  1376.     #INSERT(%AddSelectBrowse,%Relation)
  1377.     #FIX(%File,%QuickProcedurePrimary)
  1378.     #FIX(%Relation,%ValueConstruct)
  1379.     #FIX(%ProcedureList,%CurrentProcedure)
  1380.   #ENDFOR
  1381. #ENDIF
  1382. #FIX(%ProcedureList,%CurrentProcedure)
  1383. #IF(%QuickBrowseUpdateProcedure)
  1384.   #INSERT(%AddUpdateProcedure,%QuickProcedurePrimary,%QuickBrowseUpdateProcedure)
  1385.   #FIX(%ProcedureList,%CurrentProcedure)
  1386. #ENDIF
  1387. #!
  1388. #!Delete adding of CurrentTab variable
  1389. #!#ADD(%ProcedureDataItemID,ITEMS(%ProcedureDataItemID)+1)
  1390. #!SET(%ProcedureDataItem,'CurrentTab')
  1391. #!SET(%ProcedureDataItemType,'STRING(80)')
  1392. #!
  1393. #MESSAGE('Determining Window Size',3)
  1394. #ADD(%WindowLayerID,%LayerPreSheet)
  1395. #FIX(%ProcedureList,%CurrentProcedure)
  1396. #SET(%WorksheetHeight,%MaximumSheetHeight)
  1397. #SET(%WorksheetWidth,0)
  1398. #FIX(%FileList,%QuickProcedurePrimary)
  1399. #INSERT(%QuickSetBrowseBox,%QuickProcedurePrimary,0,%QuickProcedurePrimaryKey,%QuickBrowseUpdateProcedure)
  1400. #SET(%PrimaryBrowseInstance,%QuickTemplateInstance)
  1401. #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  1402. #SET(%WindowControl,%QuickTemplateControl)
  1403. #SET(%WindowControlXOffset,2 * %DefaultXOffset)
  1404. #SET(%WindowControlYOffset,2 * %DefaultYOffset)
  1405. #IF(%QuickBrowseUpdateProcedure)
  1406.   #SET(%WorksheetWidth,%WorksheetWidth + (3 * %DefaultButtonWidth) + (4 * %DefaultXOffset))
  1407. #ENDIF
  1408. #IF(%QuickBrowseSelectButton)
  1409.   #SET(%WorksheetWidth,%WorksheetWidth + %DefaultButtonWidth + %DefaultXOffset)
  1410. #ENDIF
  1411. #IF(%QuickBrowseParentHandling = 'Select parent record via button' AND %QBBParentFound)
  1412.   #SET(%WorksheetWidth,%WorksheetWidth + %DefaultButtonWidth + %DefaultXOffset)
  1413. #ENDIF
  1414. #IF(%WorksheetWidth)
  1415.   #SET(%WindowControlHeight,%WorksheetHeight - ((3 * %DefaultYOffset) + %DefaultButtonHeight))
  1416. #ELSE
  1417.   #SET(%WindowControlHeight,%WorksheetHeight - %DefaultYOffset)
  1418. #ENDIF
  1419. #IF(%QBBWidth > %WorksheetWidth)
  1420.   #SET(%WorksheetWidth,%QBBWidth)
  1421. #ENDIF
  1422. #IF(%WorksheetWidth > %MaximumSheetWidth)
  1423.   #SET(%WorksheetWidth,%MaximumSheetWidth)
  1424. #ELSIF(%WorksheetWidth < %MinimumsheetWidth)
  1425.   #SET(%WorksheetWidth,%MinimumSheetWidth)
  1426. #ENDIF
  1427. #SET(%WindowControlWidth,%WorksheetWidth - (2 * %DefaultYOffset))
  1428. #FREE(%RelationList)
  1429. #SET(%RelationRows,0)
  1430. #SET(%RelationCols,0)
  1431. #IF(%QuickBrowseChildHandling)
  1432.   #FIX(%File,%QuickProcedurePrimary)
  1433.   #FOR(%Relation),WHERE(%FileRelationType = '1:MANY')
  1434.     #IF(%FileKey AND %RelationKey)
  1435.       #ADD(%Relationlist,%Relation)
  1436.       #SET(%RelationCols,%RelationCols + 1)
  1437.       #IF(%RelationCols = %MaximumRelationCols)
  1438.         #SET(%RelationCols,0)
  1439.       #ENDIF
  1440.       #IF(%RelationCols = 0)
  1441.         #SET(%RelationRows,%RelationRows + 1)
  1442.       #ENDIF
  1443.     #ENDIF
  1444.   #ENDFOR
  1445. #ENDIF
  1446. #SET(%WindowWidth,%WorksheetWidth + (2 * %DefaultXOffset))
  1447. #SET(%WindowHeight,%WorksheetHeight + (3 * %DefaultYOffset) + %DefaultButtonHeight)
  1448. #IF(%RelationRows AND NOT %RelationCols)
  1449.   #SET(%RelationRows,%RelationRows-1)
  1450.   #SET(%RelationCols,4)
  1451. #ENDIF
  1452. #IF(%RelationRows)
  1453.   #SET(%WindowHeight,%WindowHeight + (%RelationRows * (%DefaultYOffset + %DefaultButtonHeight)))
  1454.   #SET(%ValueConstruct,6)
  1455. #ELSE
  1456.   #SET(%ValueConstruct,%RelationCols + 2)
  1457. #ENDIF
  1458. #SET(%HoldConstruct,(%ValueConstruct * %DefaultButtonWidth) + ((%ValueConstruct + 1) * %DefaultXOffset))
  1459. #IF(%HoldConstruct > %WindowWidth)
  1460.   #SET(%ValueConstruct,%HoldConstruct - %WindowWidth)
  1461.   #SET(%WindowWidth,%HoldConstruct)
  1462.   #SET(%WorksheetWidth,%WindowWidth - (2 * %DefaultYOffset))
  1463.   #SET(%WindowControlWidth,%WorksheetWidth - (2 * %DefaultYOffset))
  1464. #ENDIF
  1465. #SET(%ValueConstruct,0)
  1466. #IF(%QuickBrowseUpdateProcedure)
  1467.   #SET(%ValueConstruct,3)
  1468. #ENDIF
  1469. #IF(%QuickBrowseSelectButton)
  1470.   #SET(%ValueConstruct,%ValueConstruct + 1)
  1471. #ENDIF
  1472. #FIND(%QuickTemplateInstance,%PrimaryBrowseInstance)
  1473. #SET(%CurrentX,(%WindowControlXOffset + %WindowControlWidth) - ((%ValueConstruct * %DefaultButtonWidth) + ((%ValueConstruct - 1) * %DefaultXOffset)))
  1474. #SET(%CurrentY,%WindowControlYOffset + %WindowControlHeight + %DefaultYOffset)
  1475. #IF(%QuickBrowseOrderCWTab)
  1476.   #SET(%HoldConstruct,%QuickTemplateInstance)
  1477.   #INSERT(%QuickSetOrderCwTab)
  1478.   #SELECT(%QuickTemplateControl,1)
  1479.   #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  1480.   #SET(%WindowControl,%QuickTemplateControl)
  1481.   #SET(%WindowControlXOffset,%DefaultXOffset)
  1482.   #SET(%WindowControlYOffset,%DefaultYOffset)
  1483.   #SET(%WindowControlHeight,%WorkSheetHeight)
  1484.   #SET(%WindowControlWidth,%WorkSheetWidth)
  1485.   #FIX(%QuickTemplateInstance,%HoldConstruct)
  1486. #ENDIF
  1487. #IF(%QuickBrowseSelectButton)
  1488.   #INSERT(%QuickSetBrowseSelectButton)
  1489.   #SELECT(%QuickTemplateControl,1)
  1490.   #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  1491.   #SET(%WindowControl,%QuickTemplateControl)
  1492.   #SET(%WindowControlXOffset,%CurrentX)
  1493.   #SET(%WindowControlYOffset,%CurrentY)
  1494.   #SET(%WindowControlHeight,%DefaultButtonHeight)
  1495.   #SET(%WindowControlWidth,%DefaultButtonWidth)
  1496.   #SET(%CurrentX,%CurrentX + %DefaultXOffset + %DefaultButtonWidth)
  1497. #ENDIF
  1498. #IF(%QuickBrowseUpdateProcedure)
  1499.   #FIND(%QuickTemplateInstance,%PrimaryBrowseInstance)
  1500.   #INSERT(%QuickSetBrowseUpdateButton,%QuickBrowseUpdatePopupMenu,%True)
  1501.   #FOR(%QuickTemplateControl)
  1502.     #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  1503.     #SET(%WindowControl,%QuickTemplateControl)
  1504.     #SET(%WindowControlXOffset,%CurrentX)
  1505.     #SET(%WindowControlYOffset,%CurrentY)
  1506.     #SET(%WindowControlHeight,%DefaultButtonHeight)
  1507.     #SET(%WindowControlWidth,%DefaultButtonWidth)
  1508.     #SET(%CurrentX,%CurrentX + %DefaultXOffset + %DefaultButtonWidth)
  1509.   #ENDFOR
  1510. #ENDIF
  1511. #FIND(%QuickTemplateInstance,%PrimaryBrowseInstance)
  1512. #IF(ITEMS(%QBBKeyList))
  1513.   #FOR(%QBBKeyList)
  1514.     #FIX(%KeyListID,%QBBKeyListID)
  1515.     #ADD(%WindowLayerID,ITEMS(%WindowLayerID)+1)
  1516.     #SET(%WindowLayerTabText,%KeyListTab)
  1517.     #SET(%CurrentY,%WorksheetHeight - %DefaultButtonHeight)
  1518.     #IF(%QuickBrowseParentHandling = 'Select parent record via button')
  1519.       #IF(%QBBRangeFile)
  1520.         #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  1521.         #SET(%WindowControl,'?Select' & %QBBRangeFile)
  1522.         #SET(%ValueConstruct,%WorksheetWidth - (2 * %DefaultXOffset))
  1523.         #IF(%QuickBrowseSelectButton)
  1524.           #SET(%ValueConstruct,%ValueConstruct - (%DefaultXOffset + %DefaultButtonWidth))
  1525.         #ENDIF
  1526.         #IF(%QuickBrowseUpdateProcedure)
  1527.           #SET(%ValueConstruct,%ValueConstruct - (3 * (%DefaultXOffset + %DefaultButtonWidth)))
  1528.         #ENDIF
  1529.         #IF(%ValueConstruct > (2 * %DefaultButtonWidth) + %DefaultXOffset)
  1530.           #SET(%ValueConstruct,'Select ' & %QBBRangeFile)
  1531.           #SET(%WindowControlWidth,(2 * %DefaultButtonWidth) + %DefaultXOffset)
  1532.         #ELSE
  1533.           #IF(LEN(%QBBRangeFile) > 12)
  1534.             #SET(%ValueConstruct,SUB(%QBBRangeFile,1,9) & '...')
  1535.           #ELSE
  1536.             #SET(%ValueConstruct,%QBBRangeFile)
  1537.           #ENDIF
  1538.           #SET(%WindowControlWidth,%DefaultButtonWidth)
  1539.         #ENDIF
  1540.         #SET(%WindowControlStatement,'BUTTON(''' & %ValueConstruct & ''')')
  1541.         #SET(%WindowControlXOffset,2 * %DefaultXOffset)
  1542.         #SET(%WindowControlYOffset,%CurrentY)
  1543.         #SET(%WindowControlHeight,%DefaultButtonHeight)
  1544.         #ADD(%ButtonControlID,ITEMS(%ButtonControlID)+1)
  1545.         #SET(%ButtonControl,%WindowControl)
  1546.         #SET(%ButtonAction,'Call a Procedure')
  1547.         #SET(%ButtonProcedure,'Select' & %QBBRangeFile)
  1548.         #SET(%ButtonThread,'0')
  1549.         #SET(%ButtonThreadStack,'025000')
  1550.         #SET(%ButtonRequest,'Select')
  1551.       #ENDIF
  1552.     #ENDIF
  1553.   #ENDFOR
  1554. #ELSE
  1555.   #ADD(%WindowLayerID,ITEMS(%WindowLayerID)+1)
  1556.   #SET(%WindowLayerTabText,'Record Order')
  1557. #ENDIF
  1558. #SET(%TabLineCount,1)
  1559. #SET(%CurrentTabLineLength,0)
  1560. #SET(%CurrentTabLength,0)
  1561. #FOR(%WindowLayerID)
  1562.   #IF(INSTRING('&',%WindowLayerTabText,1,1))
  1563.     #SET(%CurrentTabLength,(LEN(%WindowLayerTabText) * 4))
  1564.   #ELSE
  1565.     #SET(%CurrentTabLength,((LEN(%WindowLayerTabText) - 1) * 4))
  1566.   #ENDIF
  1567.   #IF(%CurrentTabLength < %MinimumTabLength)
  1568.     #SET(%CurrentTabLength,%MinimumTabLength)
  1569.   #ENDIF
  1570.   #SET(%CurrentTabLength,%CurrentTabLength + %TabTextOffset)
  1571.   #IF((%CurrentTabLength + %CurrentTabLineLength) > %WorksheetWidth)
  1572.     #SET(%TabLineCount,%TabLineCount + 1)
  1573.     #SET(%CurrentTabLineLength,%CurrentTabLength)
  1574.   #ELSE
  1575.     #SET(%CurrentTabLineLength,%CurrentTabLineLength + %CurrentTabLength)
  1576.   #ENDIF
  1577.   #IF(%WindowLayerTopOffset > %MaximumTopOffset)
  1578.     #SET(%MaximumTopOffset,%WindowLayerTopOffset)
  1579.   #ENDIF
  1580. #ENDFOR
  1581. #SET(%InitialSheetYOffset,(%TabLineVerticalOffset * %TabLineCount) + %TabDefaultVerticalOffset)
  1582. #SET(%WorksheetHeight,%MaximumSheetHeight + %InitialSheetYOffset)
  1583. #FOR(%WindowLayerID)
  1584.   #FOR(%WindowControlID)
  1585.     #SET(%WindowControlYOffset,%WindowControlYOffset + %InitialSheetYOffset)
  1586.   #ENDFOR
  1587. #ENDFOR
  1588. #SET(%ValueConstruct,%WorkSheetHeight - %MaximumSheetHeight)
  1589. #SET(%WindowHeight,%WindowHeight + %ValueConstruct)
  1590. #ADD(%WindowLayerID,%LayerWindow)
  1591. #SET(%CurrentY,%WindowHeight - (%DefaultYOffset + %DefaultButtonHeight))
  1592. #SET(%CurrentX,%DefaultXOffset)
  1593. #FIX(%FileList,%QuickProcedurePrimary)
  1594. #IF(ITEMS(%RelationList))
  1595.   #SET(%CurrentY,%CurrentY - (%RelationRows * ((%DefaultYOffset + %DefaultButtonHeight))))
  1596.   #FOR(%RelationList)
  1597.     #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  1598.     #SET(%WindowControl,'?Browse' & %RelationList)
  1599.     #IF(LEN(%RelationList) > 12)
  1600.       #SET(%ValueConstruct,SUB(%RelationList,1,9) & '...')
  1601.     #ELSE
  1602.       #SET(%ValueConstruct,%RelationList)
  1603.     #ENDIF
  1604.     #SET(%WindowControlStatement,'BUTTON(''' & %ValueConstruct & ''')')
  1605.     #SET(%WindowControlXOffset,%CurrentX)
  1606.     #SET(%WindowControlYOffset,%CurrentY)
  1607.     #SET(%WindowControlHeight,%DefaultButtonHeight)
  1608.     #SET(%WindowControlWidth,%DefaultButtonWidth)
  1609.     #ADD(%ButtonControlID,ITEMS(%ButtonControlID)+1)
  1610.     #SET(%ButtonControl,%WindowControl)
  1611.     #SET(%ButtonAction,'Call a Procedure')
  1612.     #FIX(%Relation,%RelationList)
  1613.     #SET(%ButtonProcedure,'Browse' & %RelationKey)
  1614.     #SET(%ButtonThread,'0')
  1615.     #SET(%ButtonThreadStack,'025000')
  1616.     #SET(%RelationCols,%RelationCols - 1)
  1617.     #IF(%RelationCols = 0)
  1618.       #SET(%CurrentY,%CurrentY + %DefaultYOffset + %DefaultButtonHeight)
  1619.       #SET(%CurrentX,%DefaultXOffset)
  1620.       #SET(%RelationCols,4)
  1621.     #ELSE
  1622.       #SET(%CurrentX,%CurrentX + %DefaultXOffset + %DefaultButtonWidth)
  1623.     #ENDIF
  1624.   #ENDFOR
  1625. #ENDIF
  1626. #SET(%CurrentX,%WindowWidth - (2 * (%DefaultXOffset + %DefaultButtonWidth)))
  1627. #SET(%CurrentY,%WindowHeight - (%DefaultButtonHeight + %DefaultYOffset))
  1628. #INSERT(%QuickSetCloseButton)
  1629. #SELECT(%QuickTemplateControl,1)
  1630. #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  1631. #SET(%WindowControl,%QuickTemplateControl)
  1632. #SET(%WindowControlXOffset,%CurrentX)
  1633. #SET(%WindowControlYOffset,%CurrentY)
  1634. #SET(%WindowControlHeight,%DefaultButtonHeight)
  1635. #SET(%WindowControlWidth,%DefaultButtonWidth)
  1636. #SET(%CurrentX,%CurrentX + %DefaultXOffset + %defaultButtonWidth)
  1637. #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  1638. #SET(%WindowControl,'?Help')
  1639. #SET(%WindowControlStatement,'BUTTON(''' & %DefaultHelpControlText & '''),STD(STD:Help)')
  1640. #SET(%WindowControlXOffset,%CurrentX)
  1641. #SET(%WindowControlYOffset,%CurrentY)
  1642. #SET(%WindowControlHeight,%DefaultButtonHeight)
  1643. #SET(%WindowControlWidth,%DefaultButtonWidth)
  1644. #!
  1645. #!
  1646. #!
  1647. #!
  1648. #!--------------------------------------------------------------------------
  1649. #!
  1650. #!Replacement for WFORM.TPW
  1651. #!
  1652. #!--------------------------------------------------------------------------
  1653. #UTILITY(FormWizard,'Create a New Record Update (Form) Procedure'),WIZARD
  1654. #!
  1655. #SHEET
  1656.   #TAB('Form Wizard')
  1657.     #IMAGE('PPRFORM.BMP')
  1658.     #DISPLAY('This wizard will help you quickly create a new record update (Form) procedure.'),AT(90,8,235,24)
  1659.     #DISPLAY('To begin creating your new Form procedure, click Next.'),AT(90)
  1660.   #ENDTAB
  1661.   #TAB('Form Wizard - Procedure Name'),WHERE(~%QuickProcedure)
  1662.     #IMAGE('CMPFORM.BMP')
  1663.     #PROMPT('What name should be used as the label of this form procedure?',@S100),%QuickFormPromptProcedureName,AT(90,23,235),PROMPTAT(90,8,235)
  1664.     #VALIDATE(%QuickFormPromptProcedureName,'You must supply a procedure name!')
  1665.   #ENDTAB
  1666.   #TAB('Form Wizard - File Access'),FINISH(1)
  1667.     #IMAGE('WINFORM1.BMP')
  1668.     #PROMPT('Which file do you want the form to update?',FILE),%QuickFormPromptPrimaryFile,AT(90,23,235),PROMPTAT(90,8,235)
  1669.     #VALIDATE(%QuickFormPromptPrimaryFile,'You must supply a file to update!')
  1670.   #ENDTAB
  1671.   #TAB('Form Wizard - Updating Records'),FINISH(1)
  1672.     #IMAGE('WINFORM1.BMP')
  1673.     #DISPLAY('A form procedure can insert a new record, change the data in a record, or delete a record from the file.  Any of these can be disabled.'),AT(90,8,235,25)
  1674.     #PROMPT('Allow Records To Be Added',CHECK),%QuickFormPromptAllowInsert,DEFAULT(1),AT(90,,235)
  1675.     #PROMPT('Allow Records To Be Modified',CHECK),%QuickFormPromptAllowChange,DEFAULT(1),AT(90,,235)
  1676.     #PROMPT('Allow Records To Be Deleted',CHECK),%QuickFormPromptAllowDelete,DEFAULT(1),AT(90,,235)
  1677.   #ENDTAB
  1678.   #TAB('Form Wizard - Messages'),FINISH(1)
  1679.     #IMAGE('WINFORM1.BMP')
  1680.     #DISPLAY('This form procedure will be called from a button, menu, or key that requests that a record be inserted, changed, or deleted.  A message will be displayed to describe the action requested.'),AT(90,8,235,25)
  1681.     #ENABLE(%QuickFormPromptAllowInsert)
  1682.       #PROMPT('Insert Message:',@S40),%QuickFormPromptInsertMessage,DEFAULT('Record Will Be Added'),PROMPTAT(90),AT(200,,125)
  1683.     #ENDENABLE
  1684.     #ENABLE(%QuickFormPromptAllowChange)
  1685.       #PROMPT('Change Message:',@S40),%QuickFormPromptChangeMessage,DEFAULT('Record Will Be Changed'),PROMPTAT(90),AT(200,,125)
  1686.     #ENDENABLE
  1687.     #ENABLE(%QuickFormPromptAllowDelete)
  1688.       #PROMPT('Delete Message:',@S40),%QuickFormPromptDeleteMessage,DEFAULT('Record Will Be Deleted'),PROMPTAT(90),AT(200,,125)
  1689.     #ENDENABLE
  1690.     #PROMPT('Where do you want this message to be displayed?',DROP('Title Bar|Status Bar')),%QuickFormPromptMessageLocation,DEFAULT('Title Bar'),AT(90,88,235),PROMPTAT(90,78,235)
  1691.   #ENDTAB
  1692.   #TAB('Form Wizard - Active Record Display'),FINISH(1)
  1693.     #IMAGE('WINFORM2.BMP')
  1694.     #PROMPT('A field can be displayed in the title bar that identifies the active record.',FIELD(%QuickFormPromptPrimaryFile)),%QuickFormPromptAppendToTitleID,AT(90,23,235),PROMPTAT(90,8,235,30)
  1695.   #ENDTAB
  1696.   #TAB('Form Wizard - Record Validation'),FINISH(1)
  1697.     #IMAGE('WINFORM3.BMP')
  1698.     #DISPLAY('The data dictionary contains validation rules for the fields used in this form procedure.  These rules can be ignored, they can be enforced when each field is entered, or they can be enforced after the entire window is completed.'),AT(90,8,235,24)
  1699.     #PROMPT('Validate field values whenever field value changes?',CHECK),%QuickFormPromptValidateOnAccept,DEFAULT(1),AT(90,,235)
  1700.     #PROMPT('Validate field values when the OK button is pressed?',CHECK),%QuickFormPromptValidateOnNonStopSelect,DEFAULT(1),AT(90,,235)
  1701.   #ENDTAB
  1702.   #TAB('Form Wizard - Child File Handling'),FINISH(1)
  1703.     #IMAGE('WINFORM4.BMP')
  1704.     #DISPLAY('If this file has one:many relationships with other files in the data dictionary, list boxes can be generated to browse the child files.  These list boxes can be placed on tabs, or they can be accessed with push buttons.'),AT(90,8,235,24)
  1705.     #PROMPT('&Browsing Child Files',OPTION),%QuickFormPromptChildHandling,DEFAULT('Place children on tabs'),AT(90,40,235)
  1706.     #PROMPT('&Place children on tabs',RADIO),AT(100)
  1707.     #PROMPT('&Access children with push button',RADIO),AT(100)
  1708.     #PROMPT('&Do not provide child access',RADIO),AT(100)
  1709.   #ENDTAB
  1710.   #TAB('Form Wizard - Finally...')
  1711.     #IMAGE('WINFORM.BMP')
  1712.     #DISPLAY('If you are creating new procedures with names that already exist in your application, the old procedures can be overwritten or the new procedures can be suppressed.'),AT(90,8,235,24)
  1713.     #PROMPT('Overwrite existing procedures',CHECK),%QuickFormPromptOverwriteAll,AT(90,,235),DEFAULT(0)
  1714.     #IMAGE('<255,1,4,127>'),AT(90,55)
  1715.     #DISPLAY('The form procedure will always be overwritten by the form wizard!'),AT(125,54,200,20)
  1716.   #ENDTAB
  1717. #ENDSHEET
  1718. #!
  1719. #INSERT(%DeclareSymbols)
  1720. #!
  1721. #IF(%QuickProcedure)
  1722.   #SET(%ValueConstruct,%QuickProcedure)
  1723. #ELSE
  1724.   #SET(%ValueConstruct,%QuickFormPromptProcedureName)
  1725. #ENDIF
  1726. #SET(%ReplaceExistingProcedures,%QuickFormPromptOverwriteAll)
  1727. #ADD(%ProcedureList,%ValueConstruct)
  1728. #SET(%QuickProcedurePrimary,%QuickFormPromptPrimaryFile)
  1729. #SET(%QuickProcedureType,'Clarion Form')
  1730. #SET(%QuickProcedureDescription,'Update the ' & %QuickProcedurePrimary & ' File')
  1731. #SET(%QuickProcedureWindow,%True)
  1732. #SET(%QuickFormAllowInsert,%QuickFormPromptAllowInsert)
  1733. #SET(%QuickFormAllowChange,%QuickFormPromptAllowChange)
  1734. #SET(%QuickFormAllowDelete,%QuickFormPromptAllowDelete)
  1735. #SET(%QuickFormInsertMessage,%QuickFormPromptInsertMessage)
  1736. #SET(%QuickFormChangeMessage,%QuickFormPromptChangeMessage)
  1737. #SET(%QuickFormDeleteMessage,%QuickFormPromptDeleteMessage)
  1738. #SET(%QuickFormMessageLocation,%QuickFormPromptMessageLocation)
  1739. #SET(%QuickFormAppendToTitleID,%QuickFormPromptAppendToTitleID)
  1740. #SET(%QuickFormValidateOnAccept,%QuickFormPromptValidateOnAccept)
  1741. #SET(%QuickFormValidateOnNonStopSelect,%QuickFormPromptValidateOnNonStopSelect)
  1742. #CASE(%QuickFormPromptChildHandling)
  1743. #OF('Place children on tabs')
  1744.   #SET(%QuickFormChildHandling,'Tabbed Browses')
  1745. #OF('Access children with push button')
  1746.   #SET(%QuickFormChildHandling,'Push Button Access')
  1747. #ELSE
  1748.   #SET(%QuickFormChildHandling,'None')
  1749. #ENDCASE
  1750. #!
  1751. #INSERT(%GenerateProcedures)
  1752. #!
  1753. #!-------------------------------------------------------------
  1754. #GROUP(%QuickFormDeclarations)
  1755. #DECLARE(%QuickFormPrimaryFile,%ProcedureList)
  1756. #DECLARE(%QuickFormAllowInsert,%ProcedureList)
  1757. #DECLARE(%QuickFormAllowChange,%ProcedureList)
  1758. #DECLARE(%QuickFormAllowDelete,%ProcedureList)
  1759. #DECLARE(%QuickFormInsertMessage,%ProcedureList)
  1760. #DECLARE(%QuickFormChangeMessage,%ProcedureList)
  1761. #DECLARE(%QuickFormDeleteMessage,%ProcedureList)
  1762. #DECLARE(%QuickFormMessageLocation,%ProcedureList)
  1763. #DECLARE(%QuickFormAppendToTitleID,%ProcedureList)
  1764. #DECLARE(%QuickFormValidateOnAccept,%ProcedureList)
  1765. #DECLARE(%QuickFormValidateOnNonStopSelect,%ProcedureList)
  1766. #DECLARE(%QuickFormChildHandling,%ProcedureList)
  1767. #DECLARE(%QuickFormCreateChildrenProcedures,%ProcedureList)
  1768. #DECLARE(%QuickFormNewPage,%ProcedureList)
  1769. #!--------------------------------------------------------
  1770. #GROUP(%ConstructQuickForm)
  1771. #MESSAGE('Determining Secondary Procedures',3)
  1772. #CASE(%QuickProcedureDefault)
  1773. #OF('Update Form')
  1774.   #INSERT(%UpdateFormDefaults)
  1775. #ENDCASE
  1776. #IF(%QuickFormChildHandling <> 'None')
  1777.   #FIX(%File,%QuickProcedurePrimary)
  1778.   #FOR(%Relation),WHERE(%FileRelationType = '1:MANY')
  1779.     #IF(%FileKey AND %RelationKey)
  1780.       #SET(%ValueConstruct,%Relation)
  1781.       #IF(%QuickFormChildHandling = 'Push Button Access')
  1782.         #INSERT(%AddSecondaryBrowse,%RelationKey)
  1783.       #ELSIF(%QuickFormChildHandling = 'Tabbed Browses')
  1784.         #INSERT(%AddUpdateProcedure,%Relation,'')
  1785.       #ENDIF
  1786.       #FIX(%File,%QuickProcedurePrimary)
  1787.       #FIX(%Relation,%ValueConstruct)
  1788.       #FIX(%ProcedureList,%CurrentProcedure)
  1789.     #ENDIF
  1790.   #ENDFOR
  1791. #ENDIF
  1792. #FIX(%ProcedureList,%CurrentProcedure)
  1793. #FIX(%FileList,%QuickProcedurePrimary)
  1794. #FOR(%FieldListID)
  1795.   #IF(%FieldListLookup)
  1796.     #INSERT(%AddSelectBrowse,%FieldListLookup)
  1797.   #ENDIF
  1798. #ENDFOR
  1799. #FIX(%ProcedureList,%CurrentProcedure)
  1800. #FIX(%FileList,%QuickProcedurePrimary)
  1801. #FOR(%FieldListID)
  1802.   #IF(%FieldListLookup)
  1803.     #ADD(%QuickOtherFiles,%FieldListLookup)
  1804.   #ENDIF
  1805. #ENDFOR
  1806. #MESSAGE('Determining Window Size',3)
  1807. #FIX(%ProcedureList,%CurrentProcedure)
  1808. #ADD(%ProcedureDataItemID,ITEMS(%ProcedureDataItemID)+1)
  1809. #SET(%ProcedureDataItem,'CurrentTab')
  1810. #SET(%ProcedureDataItemType,'STRING(80)')
  1811. #FIX(%FileList,%QuickProcedurePrimary)
  1812. #SET(%WorksheetHeight,%MaximumSheetHeight)
  1813. #SET(%WorksheetWidth,%FileListControlsWidth + (2 * %DefaultXOffset))
  1814. #IF(%WorksheetWidth > %MaximumSheetWidth)
  1815.   #SET(%WorksheetWidth,%MaximumSheetWidth)
  1816. #ENDIF
  1817. #SET(%WindowHeight,%WorksheetHeight + (3 * %DefaultYOffset) + %DefaultButtonHeight)
  1818. #INSERT(%QuickSetRecordValidation)
  1819. #SET(%RelationRows,0)
  1820. #SET(%RelationCols,0)
  1821. #SET(%WindowButtonRows,1)
  1822. #SET(%WindowButtonColumns,2)
  1823. #MESSAGE('Finding Relations',3)
  1824. #IF(%QuickFormChildHandling = 'None')
  1825.   #SET(%WindowWidth,%WorksheetWidth + (2 * %DefaultXOffset))
  1826.   #SET(%ValueConstruct,(%WindowButtonColumns * (%DefaultXOffset + %DefaultButtonHeight)) + %DefaultXOffset)
  1827.   #IF(%WindowWidth < %ValueConstruct)
  1828.     #SET(%WindowWidth,%ValueConstruct)
  1829.     #SET(%WorksheetWidth,%WindowWidth - (2 * %DefaultXOffset))
  1830.   #ENDIF
  1831. #ELSE
  1832.   #FIX(%File,%QuickProcedurePrimary)
  1833.   #FOR(%Relation),WHERE(%FileRelationType = '1:MANY')
  1834.     #IF(%FileKey AND %RelationKey)
  1835.       #ADD(%RelationList,%Relation)
  1836.       #SET(%RelationCols,%RelationCols + 1)
  1837.       #IF(%RelationCols = %MaximumRelationCols)
  1838.         #SET(%RelationCols,0)
  1839.       #ENDIF
  1840.       #IF(%RelationCols = 0)
  1841.         #SET(%RelationRows,%RelationRows + 1)
  1842.       #ENDIF
  1843.     #ENDIF
  1844.   #ENDFOR
  1845.   #IF(%RelationRows AND NOT %RelationCols)
  1846.     #SET(%RelationRows,%RelationRows - 1)
  1847.     #SET(%RelationCols,4)
  1848.   #ENDIF
  1849.   #IF(%QuickFormChildHandling = 'Tabbed Browses')
  1850.     #IF(ITEMS(%RelationList))
  1851.       #SET(%WorksheetButtonColumns,3)
  1852.       #SET(%ValueConstruct,(%WorksheetButtonColumns * (%DefaultXOffset + %DefaultButtonWidth)) + %DefaultXOffset)
  1853.       #IF(%WorksheetWidth < %ValueConstruct)
  1854.         #SET(%WorksheetWidth,%ValueConstruct)
  1855.       #ENDIF
  1856.     #ENDIF
  1857.     #SET(%WindowWidth,%WorksheetWidth + (2 * %DefaultXOffset))
  1858.     #FOR(%RelationList)
  1859.       #FIX(%FileList,%RelationList)
  1860.       #IF(NOT %FileList)
  1861.         #ADD(%FileList,%RelationList)
  1862.         #INSERT(%AccumulateFieldList,%FileList)
  1863.       #ENDIF
  1864.     #ENDFOR
  1865.   #ELSIF(%QuickFormChildHandling = 'Push Button Access')
  1866.     #IF(%RelationRows)
  1867.       #SET(%WindowHeight,%WindowHeight + (%RelationRows * (%DefaultYOffset + %DefaultButtonHeight)))
  1868.       #SET(%WindowButtonColumns,7)
  1869.     #ELSE
  1870.       #SET(%WindowButtonColumns,%RelationCols + 3)
  1871.     #ENDIF
  1872.     #SET(%ValueConstruct,(%WindowButtonColumns * (%DefaultXOffset + %DefaultButtonWidth) + %DefaultXOffset))
  1873.     #IF(%ValueConstruct > %WindowWidth)
  1874.       #SET(%WindowWidth,%ValueConstruct)
  1875.     #ENDIF
  1876.     #IF(%WindowWidth > %WorksheetWidth + (2 * %DefaultXOffset))
  1877.       #SET(%WorksheetWidth,%WindowWidth - (2 * %DefaultXOffset))
  1878.     #ENDIF
  1879.   #ENDIF
  1880. #ENDIF
  1881. #SET(%ValueConstruct,(3 * %DefaultButtonWidth) + (4 * %DefaultXOffset))
  1882. #IF(%WindowWidth < %ValueConstruct)
  1883.   #SET(%WindowWidth,%ValueConstruct)
  1884.   #SET(%WorksheetWidth,%ValueConstruct - (2 * %DefaultXOffset))
  1885. #ENDIF
  1886. #FIX(%FileList,%QuickProcedurePrimary)
  1887. #FOR(%FileListTab)
  1888.   #SET(%CurrentTab,%FileListTab)
  1889.   #SET(%CurrentY,0)
  1890.   #SET(%InitializeTab,%True)
  1891.   #SET(%ContCounter,0)
  1892.   #FOR(%FieldListID),WHERE(%FieldListTab = %FileListTab)
  1893.     #IF(%FieldListLookup)
  1894.       #ADD(%EntryControlID,ITEMS(%EntryControlID)+1)
  1895.       #SET(%EntryControl,%FieldList)
  1896.       #SET(%PostLookupKey,%FieldListLookupKey)
  1897.       #SET(%PostLookupField,%FieldListLookupField)
  1898.       #SET(%PostLookupProcedure,'Select' & %FieldListLookup)
  1899.     #ENDIF
  1900.     #MESSAGE('Populating: ' & %FieldList,3)
  1901.     #IF(%FieldListCheckColumn)
  1902.       #SET(%CurrentY,%CurrentY - (%FieldListTotalHeight + %DefaultYOffset))
  1903.     #ENDIF
  1904.     #IF(%FieldListTotalHeight + %CurrentY > %WorksheetHeight)
  1905.       #SET(%InitializeTab,%True)
  1906.       #SET(%ContCounter,%ContCounter + 1)
  1907.       #IF(%ContCounter > 1)
  1908.         #SET(%CurrentTab,%FileListTab & ' (cont. ' & %ContCounter & ' )')
  1909.       #ELSE
  1910.         #SET(%CurrentTab,%FileListTab & ' (cont.)')
  1911.       #ENDIF
  1912.     #ENDIF
  1913.     #IF(%InitializeTab)
  1914.       #ADD(%WindowLayerID,ITEMS(%WindowLayerID) + 1)
  1915.       #SET(%WindowLayerTabText,%CurrentTab)
  1916.       #SET(%CurrentY,2 * %DefaultYOffset)
  1917.     #ELSE
  1918.       #IF(%FieldListVerticalSpace)
  1919.         #SET(%CurrentY,%CurrentY + %DefaultYOffset)
  1920.       #ENDIF
  1921.     #ENDIF
  1922.     #ADD(%WindowControlID,ITEMS(%WindowControlID) + 1)
  1923.     #SET(%WindowControl,%FieldList)
  1924.     #SET(%WindowControlXOffset,(2 * %DefaultXOffset))
  1925.     #SET(%WindowControlYOffset,%CurrentY)
  1926.     #IF(%FieldListTotalHeight = 'FULL')
  1927.       #SET(%WindowLayerTopOffset,%MinimumTextHeight)
  1928.     #ELSE
  1929.       #SET(%WindowLayerTopOffset,%WindowControlYOffset + %FieldListTotalHeight)
  1930.     #ENDIF
  1931.     #SET(%CurrentY,%WindowLayerTopOffset + %DefaultYOffset)
  1932.     #SET(%InitializeTab,%False)
  1933.   #ENDFOR
  1934. #ENDFOR
  1935. #IF(%QuickFormChildHandling = 'Tabbed Browses')
  1936.   #FOR(%RelationList)
  1937.     #MESSAGE('Populating: Browse on ' & %RelationList,3)
  1938.     #ADD(%WindowLayerID,ITEMS(%WindowLayerID) + 1)
  1939.     #SET(%WindowLayerTabText,%RelationList)
  1940.     #SET(%WindowLayerSpecialCase,'BROWSE')
  1941.     #FIX(%File,%QuickProcedurePrimary)
  1942.     #FIX(%Relation,%RelationList)
  1943.     #INSERT(%QuickSetBrowseBox,%Relation,0,%RelationKey,'Update' & %RelationList)
  1944.     #SET(%PrimaryBrowseInstance,%QuickTemplateInstance)
  1945.     #FOR(%QuickTemplateControl)
  1946.       #ADD(%WindowControlID,ITEMS(%WindowControlID) + 1)
  1947.       #SET(%WindowControl,%QuickTemplateControl)
  1948.       #SET(%WindowControlYOffset,(2 * %DefaultYOffset))
  1949.       #SET(%WindowControlXOffset,(2 * %DefaultXOffset))
  1950.       #SET(%WindowControlWidth,%WorksheetWidth - (2 * %DefaultXOffset))
  1951.       #SET(%WindowControlHeight,%MinimumBrowseHeight - ((3 * %DefaultYOffset) + %DefaultButtonHeight))
  1952.     #ENDFOR
  1953.     #INSERT(%QuickSetBrowseUpdateButton,1,%False)
  1954.     #SET(%QuickTemplateProcProp,%False)
  1955.     #SET(%CurrentX,%WorksheetWidth - ((3 * %DefaultButtonWidth) + (2 * %DefaultXOffset)))
  1956.     #SET(%CurrentY,%MinimumBrowseHeight - %DefaultButtonHeight)
  1957.     #FOR(%QuickTemplateControl)
  1958.       #ADD(%WindowControlID,ITEMS(%WindowControlID) + 1)
  1959.       #SET(%WindowControl,%QuickTemplateControl)
  1960.       #SET(%WindowControlYOffset,%CurrentY)
  1961.       #SET(%WindowControlXOffset,%CurrentX)
  1962.       #SET(%WindowControlWidth,%DefaultButtonWidth)
  1963.       #SET(%WindowControlHeight,%DefaultButtonHeight)
  1964.       #SET(%CurrentX,%CurrentX + %DefaultXOffset + %DefaultButtonWidth)
  1965.     #ENDFOR
  1966.     #SET(%WindowLayerTopOffset,%MinimumBrowseHeight)
  1967.   #ENDFOR
  1968. #ENDIF
  1969. #IF(%QuickFormChildHandling = 'Tabbed Browses' AND ITEMS(%RelationList))
  1970.   #INSERT(%QuickSetPBOptionsExtension)
  1971. #ENDIF
  1972. #FIX(%FileList,%QuickProcedurePrimary)
  1973. #SET(%TabLineCount,1)
  1974. #SET(%CurrentTabLength,0)
  1975. #SET(%CurrentTabLineLength,0)
  1976. #SET(%MaximumTopOffset,0)
  1977. #FOR(%WindowLayerID)
  1978.   #IF(INSTRING('&',%WindowLayerTabText,1,1))
  1979.     #SET(%CurrentTabLength,(LEN(%WindowLayerTabText) * 4))
  1980.   #ELSE
  1981.     #SET(%CurrentTabLength,((LEN(%WindowLayerTabText) - 1) * 4))
  1982.   #ENDIF
  1983.   #IF(%CurrentTabLength < %MinimumTabLength)
  1984.     #SET(%CurrentTabLength,%MinimumTabLength)
  1985.   #ENDIF
  1986.   #SET(%CurrentTabLength,%CurrentTabLength + %TabTextOffset)
  1987.   #IF((%CurrentTabLength + %CurrentTabLineLength) > %WorksheetWidth)
  1988.     #SET(%TabLineCount,%TabLineCount + 1)
  1989.     #SET(%CurrentTabLineLength,%CurrentTabLength)
  1990.   #ELSE
  1991.     #SET(%CurrentTabLineLength,%CurrentTabLineLength + %CurrentTabLength)
  1992.   #ENDIF
  1993.   #IF(%WindowLayerTopOffset > %MaximumTopOffset)
  1994.     #SET(%MaximumTopOffset,%WindowLayerTopOffset)
  1995.   #ENDIF
  1996. #ENDFOR
  1997. #IF(%MaximumTopOffset > %MinimumBrowseHeight)
  1998.   #SET(%ValueConstruct,%MaximumTopOffset - %MinimumBrowseHeight)
  1999.   #FOR(%WindowLayerID),WHERE(%WindowLayerSpecialCase = 'BROWSE')
  2000.     #FOR(%WindowControlID)
  2001.       #IF(INSTANCE(%WindowControlID) = 1)
  2002.         #SET(%WindowControlHeight,%WindowControlHeight + %ValueConstruct)
  2003.       #ELSE
  2004.         #SET(%WindowControlYOffset,%WindowControlYOffset + %ValueConstruct)
  2005.       #ENDIF
  2006.     #ENDFOR
  2007.   #ENDFOR
  2008. #ENDIF
  2009. #SET(%InitialSheetYOffset,(%TabLineVerticalOffset * %TabLineCount) + %TabDefaultVerticalOffset)
  2010. #SET(%WorksheetHeight,%MaximumTopOffset + %InitialSheetYOffset)
  2011. #FOR(%WindowLayerID)
  2012.   #FOR(%WindowControlID)
  2013.     #SET(%WindowControlYOffset,%WindowControlYOffset + %InitialSheetYOffset)
  2014.   #ENDFOR
  2015. #ENDFOR
  2016. #SET(%ValueConstruct,%WorkSheetHeight - %MaximumSheetHeight)
  2017. #SET(%WindowHeight,%WindowHeight + %ValueConstruct)
  2018. #ADD(%WindowLayerID,%LayerWindow)
  2019. #SET(%CurrentY,%WindowHeight - (%DefaultYOffset + %DefaultButtonHeight))
  2020. #SET(%CurrentX,%DefaultXOffset)
  2021. #IF(%QuickFormChildHandling = 'Push Button Access')
  2022.   #FIX(%File,%QuickProcedurePrimary)
  2023.   #IF(ITEMS(%RelationList))
  2024.     #SET(%CurrentY,%CurrentY - (%RelationRows * ((%DefaultYOffset + %DefaultButtonHeight))))
  2025.     #FOR(%RelationList)
  2026.       #FIX(%Relation,%RelationList)
  2027.       #MESSAGE('Populating: ?Browse' & %RelationKey,3)
  2028.       #ADD(%WindowControlID,ITEMS(%WindowControlID)+1)
  2029.       #SET(%WindowControl,'?Browse' & %RelationKey)
  2030.       #IF(LEN(%RelationList) > 12)
  2031.         #SET(%ValueConstruct,SUB(%RelationList,1,9) & '...')
  2032.       #ELSE
  2033.         #SET(%ValueConstruct,%RelationList)
  2034.       #ENDIF
  2035.       #SET(%WindowControlStatement,'BUTTON(''' & %ValueConstruct & ''')')
  2036.       #SET(%WindowControlXOffset,%CurrentX)
  2037.       #SET(%WindowControlYOffset,%CurrentY)
  2038.       #SET(%WindowControlHeight,%DefaultButtonHeight)
  2039.       #SET(%WindowControlWidth,%DefaultButtonWidth)
  2040.       #ADD(%ButtonControlID,ITEMS(%ButtonControlID)+1)
  2041.       #SET(%ButtonControl,%WindowControl)
  2042.       #SET(%ButtonAction,'Call a Procedure')
  2043.       #SET(%ButtonProcedure,'Browse' & %RelationKey)
  2044.       #SET(%ButtonThread,'0')
  2045.       #SET(%ButtonThreadStack,'025000')
  2046.       #SET(%RelationCols,%RelationCols - 1)
  2047.       #IF(%RelationCols = 0)
  2048.         #SET(%CurrentY,%CurrentY + %DefaultYOffset + %DefaultButtonHeight)
  2049.         #SET(%CurrentX,%DefaultXOffset)
  2050.         #SET(%RelationCols,4)
  2051.       #ELSE
  2052.         #SET(%CurrentX,%CurrentX + %DefaultXOffset + %DefaultButtonWidth)
  2053.       #ENDIF
  2054.     #ENDFOR
  2055.   #ENDIF
  2056. #ENDIF
  2057. #SET(%CurrentX,%WindowWidth - (3 * (%DefaultXOffset + %DefaultButtonWidth)))
  2058. #SET(%CurrentY,%WindowHeight - (%DefaultButtonHeight + %DefaultYOffset))
  2059. #!
  2060. #INSERT(%QuickSetSaveButton)
  2061. #SELECT(%QuickTemplateControl,1)
  2062. #ADD(%WindowControlID,ITEMS(%WindowControlID) + 1)
  2063. #MESSAGE('Populating: ?OK',3)
  2064. #SET(%WindowControl,%QuickTemplateControl)
  2065. #SET(%WindowControlXOffset,%CurrentX)
  2066. #SET(%WindowControlYOffset,%CurrentY)
  2067. #SET(%WindowControlHeight,%DefaultButtonHeight)
  2068. #SET(%WindowControlWidth,%DefaultButtonWidth)
  2069. #SET(%CurrentX,%CurrentX + %DefaultXOffset + %DefaultButtonWidth)
  2070. #SET(%CurrentY,%WindowHeight - (%DefaultButtonHeight + %DefaultYOffset))
  2071. #!
  2072. #INSERT(%QuickSetCancelButton)
  2073. #SELECT(%QuickTemplateControl,1)
  2074. #MESSAGE('Populating: ?Cancel',3)
  2075. #ADD(%WindowControlID,ITEMS(%WindowControlID) + 1)
  2076. #SET(%WindowControl,%QuickTemplateControl)
  2077. #SET(%WindowControlXOffset,%CurrentX)
  2078. #SET(%WindowControlYOffset,%CurrentY)
  2079. #SET(%WindowControlHeight,%DefaultButtonHeight)
  2080. #SET(%WindowControlWidth,%DefaultButtonWidth)
  2081. #SET(%CurrentX,%CurrentX + %DefaultXOffset + %DefaultButtonWidth)
  2082. #!
  2083. #ADD(%WindowControlID,ITEMS(%WindowControlID) + 1)
  2084. #MESSAGE('Populating: ?Help',3)
  2085. #SET(%WindowControl,'?Help')
  2086. #SET(%WindowControlStatement,'BUTTON(''' & %DefaultHelpControlText & '''),STD(STD:Help)')
  2087. #SET(%WindowControlXOffset,%CurrentX)
  2088. #SET(%WindowControlYOffset,%CurrentY)
  2089. #SET(%WindowControlHeight,%DefaultButtonHeight)
  2090. #SET(%WindowControlWidth,%DefaultButtonWidth)
  2091.